当前位置: 首页 > 知识库问答 >
问题:

未调用Loadmanager onLoadFinished

晋承运
2023-03-14

我正在尝试用LoaderCallbacks从数据库加载数据。但不会调用loadercallbacks中的onLoadFinished函数。因此,正如您在日志中所看到的,返回的行计数为1,但列表中没有显示任何条目,也没有调用onLoadFinished。

系列化


    public class SerieFragment extends SherlockListFragment implements
            LoaderCallbacks {

        private SimpleCursorAdapter adapter;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            String[] from = new String[] { DBContract.Episodes.NAME };
            int[] to = new int[] { R.id.name };

            Log.i("LoaderManager", "Starting...");
            getLoaderManager().initLoader(0, null, this);

            adapter = new SimpleCursorAdapter(getActivity(),
                    R.layout.serie_list_item, null, from, to, 0);

            this.setListAdapter(adapter);
        }

        @Override
        public void onViewCreated(View view, Bundle savedInstanceState) {

        }

        @Override
        public Loader onCreateLoader(int id, Bundle args) {
            Log.i("LoaderManager", "Creating loader...");

            String[] projection = { DBContract.Episodes._ID,
                    DBContract.Episodes.NAME };
            CursorLoader cursorLoader = new CursorLoader(this.getActivity(),
                    Uri.parse(SerieProvider.CONTENT_URI + "/episodes"), projection,
                    null, null, null);
            return cursorLoader;
        }

        @Override
        public void onLoadFinished(Loader loader, Cursor cursor) {
            Log.i("LoaderManager",
                    "Finished load entry... - Cursor: " + cursor.getCount());
            adapter.swapCursor(cursor);
        }

        @Override
        public void onLoaderReset(Loader loader) {
            Log.i("LoaderManager", "Resetting loader...");
            adapter.swapCursor(null);
        }

ContentProvider


    public class SerieProvider extends ContentProvider {

        private static DatabaseHelper database;
        private static final String PROVIDER = "com.drizzlyday.apps.episotron.providers";
        private static final String BASE_PATH = "serieprovider";
        public static final Uri CONTENT_URI = Uri.parse("content://" + PROVIDER
                + "/" + BASE_PATH);

        public static final int SERIES = 1;
        public static final int EPISODES = 2;

        private static final UriMatcher uriMatcher;
        static {
            uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
            uriMatcher.addURI(PROVIDER, BASE_PATH, SERIES);
            uriMatcher.addURI(PROVIDER, BASE_PATH + "/episodes", EPISODES);
        }

        @Override
        public boolean onCreate() {
            database = new DatabaseHelper(getContext());
            return false;
        }

        @Override
        public int delete(Uri uri, String selection, String[] selectionArgs) {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public String getType(Uri uri) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public Uri insert(Uri uri, ContentValues values) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public Cursor query(Uri uri, String[] projection, String selection,
                String[] selectionArgs, String sortOrder) {

            Log.d("Provider", uri.toString());
            SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();

            int uriType = uriMatcher.match(uri);
            switch (uriType) {
            case SERIES:
                Log.d("Provider", "Series");
                queryBuilder.setTables(DBContract.Series.TABLE_NAME);
                break;
            case EPISODES:
                Log.d("Provider", "Episodes");
                queryBuilder.setTables(DBContract.Episodes.TABLE_NAME);
                break;
            default:
                throw new IllegalArgumentException("Unknown URI: " + uri);
            }

            SQLiteDatabase db = database.getReadableDatabase();
            SQLiteCursor cursor = (SQLiteCursor) queryBuilder.query(db, projection,
                    selection, selectionArgs, null, null, sortOrder);
            cursor.setNotificationUri(getContext().getContentResolver(), uri);

            Log.d("Provider", "Cursor: " + cursor.toString()
                    + " - Columncount: " + cursor.getColumnCount()
                    + " - Rowcount: " + cursor.getCount());

            return cursor;
        }

        @Override
        public int update(Uri uri, ContentValues values, String selection,
                String[] selectionArgs) {
            // TODO Auto-generated method stub
            return 0;
        }

05-05 23:34:30.855: I/ActivityThread(31903): Pub com.drizzlyday.apps.episotron.providers: com.drizzlyday.apps.episotron.providers.SerieProvider
05-05 23:34:31.035: D/Serie(31903): New Serie fragment
05-05 23:34:31.040: I/LoaderManager(31903): Starting...
05-05 23:34:31.040: I/LoaderManager(31903): Creating loader...
05-05 23:34:31.055: D/AbsListView(31903): Get MotionRecognitionManager
05-05 23:34:31.060: D/AbsListView(31903): Get MotionRecognitionManager
05-05 23:34:31.080: D/dalvikvm(31903): GC_CONCURRENT freed 174K, 8% free 12340K/13383K, paused 2ms+2ms, total 16ms
05-05 23:34:31.090: D/Provider(31903): content://com.drizzlyday.apps.episotron.providers/serieprovider/episodes
05-05 23:34:31.090: D/Provider(31903): Episodes
05-05 23:34:31.100: V/SlidingMenu(31903): setting padding!
05-05 23:34:31.160: D/libEGL(31903): loaded /system/lib/egl/libEGL_mali.so
05-05 23:34:31.175: D/libEGL(31903): loaded /system/lib/egl/libGLESv1_CM_mali.so
05-05 23:34:31.175: D/libEGL(31903): loaded /system/lib/egl/libGLESv2_mali.so
05-05 23:34:31.180: D/(31903): Device driver API match
05-05 23:34:31.180: D/(31903): Device driver API version: 10
05-05 23:34:31.180: D/(31903): User space API version: 10 
05-05 23:34:31.180: D/(31903): mali: REVISION=Linux-r2p4-02rel0 BUILD_DATE=Tue Oct 16 15:37:13 KST 2012 
05-05 23:34:31.210: D/OpenGLRenderer(31903): Enabling debug mode 0
05-05 23:34:31.215: V/CustomViewBehind(31903): behind INVISIBLE
05-05 23:34:31.260: D/Provider(31903): Cursor: android.database.sqlite.SQLiteCursor@41b0df88 - Columncount: 2 - Rowcount: 1

共有1个答案

章建木
2023-03-14

我发现了问题所在。必须添加以下行以刷新列表的可提取状态:

this.getListView().refreshDrawableState();
 类似资料:
  • 我正在开发一个带有ActionBars的应用程序,它支持姜饼和其他功能。所以基本上我在使用支持库并扩展 行动B活动 对于我所有的活动。除了 onSupportNavigateUp() 方法。它只是不被调用在留档中所述。 每当用户选择从操作栏在应用程序的活动层次结构中向上导航时,就会调用此方法。 这很容易,但我一直不明白为什么它不能像预期的那样工作,谷歌也帮不上忙。这是虫子吗?还是我错过了什么?

  • 运行playstore Build Apk时,未调用Marshmallow Runtime Permissions onRequestPermissionsResult,但正常调试Apk时运行良好。谁来帮帮我。。谢谢 OnRequestPermissionResult方法

  • 我很难让正常工作。无论我怎么努力,我都不能让它被称为。 我的应用程序的体系结构如下所示:我的主活动包含一个片段,其中包含一个ViewPager,而ViewPager又有四个子片段实例。目前,我正在(成功地)用填充活动中的初始选项菜单,但我希望添加一些对应于每个活动子片段的额外选项。 如果有人知道这里发生了什么,我会非常感激,因为我已经被困在这个问题上两天了。 更新--我已经搞清楚了现在的问题是什么

  • CustomDialog 下面是http://www.theappguruz.com/blog/android-take-photo-camera-gallery-code-sample

  • 我使用: null 我正在使用zuul和负载平衡rest模板从另一个微服务调用一个微服务: 请求到达下游服务,但未在ZullFilter中设置头(我使用了不同的头): 我还创建了一个过滤器: 我错过了什么?为什么不能调用筛选器?在我的案件中是否应该引用?

  • 我试图发送一个意图,从一个活动中的创建启动一个意图服务。但是,IntentService的onHandleIntent永远不会被接收。我尝试过用意图过滤器改变清单,但似乎没有任何效果。没有抛出异常,但是根本没有调用IntentService。 这是onCreate 这是IntentService类的创建者和OnHandleContent,我知道它不会被调用,因为logcat从不显示“检索到的意图”

  • 问题内容: 我有一个非常简单的Servlet和一个非常简单的HttpSessionListener: 我的方法从未被调用(没有日志输出),最终我在调用getSession()的那一行上得到一个 我尝试拨打电话时也没有问题,但存在相同的问题。 我不明白- 注释不足以调用我的侦听器吗?Eclipse甚至在下方将其显示为侦听器。 问题答案: 原来这是愚蠢的Eclipse问题之一… Project-> C

  • 问题内容: 我正在使用创建全屏图片库。当用户旋转设备,我执行更新的内 我以模态呈现,并占据了全屏。在中,我将流程布局创建为: 我也有这样的大小: 当我旋转设备时,它永远不会被调用,这将导致无法更新。旋转设备时,确实收到消息: 我已在线阅读可以添加的内容: 到,但已经没有影响。没有任何内容或版块插图。 我也有在函数内的被调用。谁能协助我解决造成此问题的原因? 问题答案: 如果您只关心设备旋转时的布局