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 回答