0

Android 2.2 では、mContext=context (またはそこに置いたもの) が呼び出されることはありません。2.3+で動作します。それは既知の問題ですか?回避策はありますか?

public class ExpListCursorAdapter extends SimpleCursorTreeAdapter {
    Context mContext;

    public ExpListCursorAdapter(Context context, Cursor cursor,
            int groupLayout, String[] groupFrom, int[] groupTo,
            int childLayout, String[] childFrom, int[] childTo) {
         super(context, cursor, groupLayout, groupFrom, groupTo, childLayout, childFrom,
            childTo);
        mContext=context;
}

    @Override
    protected Cursor getChildrenCursor(Cursor groupCursor) {
        int id=groupCursor.getInt(DatabasePazienti.ROWID);
        DatabaseTests mDbTests=new DatabaseTests(mContext);
        mDbTests.open();

        Cursor cursor=mDbTests.fetchPatientTests(id);
        return cursor;
    }
4

2 に答える 2

0

それが Android 2.2 のバグであることを確認しました (参照が見つからなかったとしても)。パッケージに Android 2.3.3 の SimpleCursorTreeAdapter.java を含めたところ、動作するようになりました。

于 2012-07-17T17:05:44.320 に答える
0

API 2.2 での の実装はSimpleCursorTreeAdapter、API 2.3 とは異なります。ここでわかるように:

API 2.2

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/android/widget/SimpleCursorTreeAdapter.java

API 2.3

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3_r1/android/widget/SimpleCursorTreeAdapter.java

API 2.2 を使用するmContext = contextと、コンストラクターで呼び出されるメソッドのシーケンスが原因で呼び出されることはありません。

于 2012-07-17T17:57:41.443 に答える