【问题标题】:Loading data from cursor crashing onLoadFinished从光标崩溃 onLoadFinished 加载数据
【发布时间】:2014-02-06 02:38:12
【问题描述】:

在我的应用程序中,我正在使用加载程序检索联系人数据。我已经调试了应用程序,发现应用程序在 onLoadFinished 回调中出现的第一条语句处崩溃。

代码如下:

@Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {
    Log.d("Loader","Load Finished");
    mAdapter.changeCursor(arg1);

    phonenumber_enter.setAdapter(mAdapter);

}

我发现应用程序在回调的第一行崩溃(在这种情况下,应用程序在记录消息时崩溃)。这是logcat:

02-05 21:31:07.357: E/AndroidRuntime(31707): java.lang.RuntimeException: An error occured while executing doInBackground()
02-05 21:31:07.357: E/AndroidRuntime(31707):    at android.support.v4.content.ModernAsyncTask$3.done(ModernAsyncTask.java:137)
02-05 21:31:07.357: E/AndroidRuntime(31707):    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
02-05 21:31:07.357: E/AndroidRuntime(31707):    at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
02-05 21:31:07.357: E/AndroidRuntime(31707):    at java.util.concurrent.FutureTask.run(FutureTask.java:242)
02-05 21:31:07.357: E/AndroidRuntime(31707):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
02-05 21:31:07.357: E/AndroidRuntime(31707):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
02-05 21:31:07.357: E/AndroidRuntime(31707):    at java.lang.Thread.run(Thread.java:841)
02-05 21:31:07.357: E/AndroidRuntime(31707): Caused by: java.lang.IllegalArgumentException: Invalid column data1
02-05 21:31:07.357: E/AndroidRuntime(31707):    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:167)
02-05 21:31:07.357: E/AndroidRuntime(31707):    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137)
02-05 21:31:07.357: E/AndroidRuntime(31707):    at android.content.ContentProviderProxy.query(ContentProviderNative.java:413)
02-05 21:31:07.357: E/AndroidRuntime(31707):    at android.content.ContentResolver.query(ContentResolver.java:461)
02-05 21:31:07.357: E/AndroidRuntime(31707):    at android.content.ContentResolver.query(ContentResolver.java:404)
02-05 21:31:07.357: E/AndroidRuntime(31707):    at android.support.v4.content.CursorLoader.loadInBackground(CursorLoader.java:49)
02-05 21:31:07.357: E/AndroidRuntime(31707):    at android.support.v4.content.CursorLoader.loadInBackground(CursorLoader.java:35)
02-05 21:31:07.357: E/AndroidRuntime(31707):    at android.support.v4.content.AsyncTaskLoader.onLoadInBackground(AsyncTaskLoader.java:242)
02-05 21:31:07.357: E/AndroidRuntime(31707):    at android.support.v4.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:51)
02-05 21:31:07.357: E/AndroidRuntime(31707):    at android.support.v4.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:40)
02-05 21:31:07.357: E/AndroidRuntime(31707):    at android.support.v4.content.ModernAsyncTask$2.call(ModernAsyncTask.java:123)
02-05 21:31:07.357: E/AndroidRuntime(31707):    at java.util.concurrent.FutureTask.run(FutureTask.java:237)

我看到没有 data1 列,但这不应该有什么不同,因为游标加载器是按如下方式创建的:

@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
    return new CursorLoader(getActivity(),
            ContactsContract.Contacts.CONTENT_URI, null, null, null,
            null);
}

由于投影为空,我认为所有可能的列都会被选中。调试后发现游标中没有data1列。任何想法将不胜感激。

编辑: 我刚刚测试了应用程序,当我将调试器附加到应用程序时似乎不会发生崩溃。虽然没有返回光标,但加载器似乎没有正常工作。

编辑 2: 好的,所以我再次调试了应用程序并看到了光标返回的所有列。没有一列包含电话号码。原文如下:

CursorLoader(getActivity(),
            ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

有什么想法吗?

【问题讨论】:

标签: java android loader simplecursoradapter android-cursorloader


【解决方案1】:

好吧,在搞砸之后我发现原来的语句不正确(我查询了错误的数据库)。我从:

CursorLoader(getActivity(),
        ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

CursorLoader(getActivity(),
            ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,
            null, null);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多