0
我的主页是6页的ViewPager(第一个设置,其他5 ListView和使用该CursorAdapter的数据)NullPointerException异常上SimpleCursorAdapter
在设置有用于打开另一个活动一个按钮,用户更改一些设置那么那个活动将以finish()(或super.onBackpressed())结束,但是每次我调用finish()时,都会出现NullPointerException。
我在做什么错?
这是我的CursorAdapter
package com.whd.roosters.adapters;
import com.whd.roosters.R;
import android.annotation.TargetApi;
import android.content.Context;
import android.database.Cursor;
import android.os.Build;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
public class RoosterCursorAdapter extends SimpleCursorAdapter {
private Cursor cursor;
private Context context;
@SuppressWarnings("deprecation") //New constructor available from API 11
public RoosterCursorAdapter(Context mContext, int layout, Cursor mCursor, String[] from, int[] to) {
super(mContext, layout, mCursor, from, to);
cursor = mCursor;
context = mContext;
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public RoosterCursorAdapter(Context mContext, int layout, Cursor mCursor, String[] from, int[] to, int flags) {
super(mContext, layout, mCursor, from, to, flags);
cursor = mCursor;
context = mContext;
}
public int getImage(int uur) {
if (uur == 1) return R.drawable.eerste;
if (uur == 2) return R.drawable.tweede;
if (uur == 3) return R.drawable.derde;
if (uur == 4) return R.drawable.vierde;
if (uur == 5) return R.drawable.vijfde;
if (uur == 6) return R.drawable.zesde;
if (uur == 7) return R.drawable.zevende;
if (uur == 8) return R.drawable.achtste;
return 1;
}
public View getView(int pos, View row, ViewGroup root) {
cursor.moveToPosition(pos);
String uur = cursor.getString(cursor.getColumnIndex("uur"));
String les = cursor.getString(cursor.getColumnIndex("les"));
String lok = cursor.getString(cursor.getColumnIndex("lok"));
String doc = cursor.getString(cursor.getColumnIndex("doc"));
ImageView UUR = null;
TextView LES = null;
TextView LOK = null;
TextView DOC = null;
if (lok.contains("Vrij")) {
if (row == null) row = ((LayoutInflater) context.getSystemService("layout_inflater")).inflate(R.layout.listview_item_rooster_vrij, null);
UUR = (ImageView) row.findViewById(R.id.LISTVIEW_ITEM_ROOSTER_VRIJ_IMAGEVIEW_UUR);
LOK = (TextView ) row.findViewById(R.id.LISTVIEW_ITEM_ROOSTER_VRIJ_TEXTVIEW_VRIJ);
} else {
if (row == null) row = ((LayoutInflater) context.getSystemService("layout_inflater")).inflate(R.layout.listview_item_rooster, null);
UUR = (ImageView) row.findViewById(R.id.LISTVIEW_ITEM_ROOSTER_IMAGEVIEW_UUR );
LES = (TextView ) row.findViewById(R.id.LISTVIEW_ITEM_ROOSTER_TEXTVIEW_LES );
LOK = (TextView ) row.findViewById(R.id.LISTVIEW_ITEM_ROOSTER_TEXTVIEW_LOKAAL);
DOC = (TextView ) row.findViewById(R.id.LISTVIEW_ITEM_ROOSTER_TEXTVIEW_DOCENT);
}
UUR.setAdjustViewBounds(true);
if ((context.getResources().getDisplayMetrics().heightPixels/10) > 10) {
UUR.setMaxHeight(context.getResources().getDisplayMetrics().heightPixels/10);
} else {
UUR.setMaxHeight(100);
}
UUR.setMinimumHeight(50);
UUR.setImageResource(getImage(Integer.parseInt(uur)));
LOK.setText(lok);
if (LES != null) LES.setText("Les: " + les);
if (DOC != null) DOC.setText("Docent: " + doc);
return row;
}
}
这是堆栈跟踪
04-07 16:08:39.430: E/AndroidRuntime(4562): FATAL EXCEPTION: main
04-07 16:08:39.430: E/AndroidRuntime(4562): java.lang.NullPointerException
04-07 16:08:39.430: E/AndroidRuntime(4562): at com.whd.roosters.adapters.RoosterCursorAdapter.getView(RoosterCursorAdapter.java:72)
04-07 16:08:39.430: E/AndroidRuntime(4562): at android.widget.AbsListView.obtainView(AbsListView.java:1597)
04-07 16:08:39.430: E/AndroidRuntime(4562): at android.widget.ListView.makeAndAddView(ListView.java:1772)
04-07 16:08:39.430: E/AndroidRuntime(4562): at android.widget.ListView.fillDown(ListView.java:695)
04-07 16:08:39.430: E/AndroidRuntime(4562): at android.widget.ListView.fillGap(ListView.java:666)
04-07 16:08:39.430: E/AndroidRuntime(4562): at android.widget.AbsListView.trackMotionScroll(AbsListView.java:4215)
04-07 16:08:39.430: E/AndroidRuntime(4562): at android.widget.AbsListView$TwFlingRunnable.run(AbsListView.java:3431)
04-07 16:08:39.430: E/AndroidRuntime(4562): at android.os.Handler.handleCallback(Handler.java:587)
04-07 16:08:39.430: E/AndroidRuntime(4562): at android.os.Handler.dispatchMessage(Handler.java:92)
04-07 16:08:39.430: E/AndroidRuntime(4562): at android.os.Looper.loop(Looper.java:130)
04-07 16:08:39.430: E/AndroidRuntime(4562): at android.app.ActivityThread.main(ActivityThread.java:3691)
04-07 16:08:39.430: E/AndroidRuntime(4562): at java.lang.reflect.Method.invokeNative(Native Method)
04-07 16:08:39.430: E/AndroidRuntime(4562): at java.lang.reflect.Method.invoke(Method.java:507)
04-07 16:08:39.430: E/AndroidRuntime(4562): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
04-07 16:08:39.430: E/AndroidRuntime(4562): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:670)
04-07 16:08:39.430: E/AndroidRuntime(4562): at dalvik.system.NativeStart.main(Native Method)
你的问题是在线72,从那里开始。 – 2013-04-07 14:23:31
是的我知道,它是这一行UUR.setAdjustViewBounds(true);所以ImageView UUR为null,但是如果在行为空的情况下对新布局进行膨胀或者在行已经存在时获取对它的引用,那么这会发生什么? – WHDeveloper 2013-04-07 14:25:11
那么你可能对这个视图的id有问题。 – 2013-04-07 14:35:14