0

私のメイン ページは 6 ページの ViewPager です (最初の 1 つの設定、他の 5 つの設定はリストビューで、このカーソルアダプタをデータに使用します)

設定には、別のアクティビティを開くボタンが 1 つあります。ユーザーがそこでいくつかの設定を変更すると、そのアクティビティは 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)
4

1 に答える 1

0

あなたの問題は72行目です:

UUR.setAdjustViewBounds(true);

私の推測では、「if」ステートメントに問題があると思います。正しいレイアウトになったと思っていても、別のレイアウトになっていると思います。

于 2013-04-07T15:35:03.683 に答える