gpt4 book ai didi

android - LoaderManager 的 restartLoader 方法中的 NullPointerException

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:06:03 26 4
gpt4 key购买 nike

我的 fragment 中有以下自己的接口(interface)实现:

@Override
public void onReportChanged(Fragment sender, long id, int position) {
// Views ein und ausblenden
_List.setVisibility(View.GONE);
_OnLoading.setVisibility(View.VISIBLE);
_NoDataView.setVisibility(View.GONE);
_ReportId = id;
getLoaderManager().restartLoader(_LM_REPORTS, null, this);
};

FragmentActivity 向这个 Fragment 报告另一个 Fragment(选择列表)已经选择了一个项目。之后,ListFragment 应加载具有报告 ID (_ReportId) 的新数据。

但是在转到 onCreateLoader-Method 之前,我在这段代码上遇到了 NullPoinerException。这是 LogCat:

05-28 14:24:37.905: E/AndroidRuntime(1775): FATAL EXCEPTION: main
05-28 14:24:37.905: E/AndroidRuntime(1775): java.lang.NullPointerException
05-28 14:24:37.905: E/AndroidRuntime(1775): at android.support.v4.app.LoaderManagerImpl.restartLoader(LoaderManager.java:637)
05-28 14:24:37.905: E/AndroidRuntime(1775): at de.webducer.android.worktime.beta.ui.fragment.ReportListFragment.onReportChanged(ReportListFra gment.java:142)
05-28 14:24:37.905: E/AndroidRuntime(1775): at de.webducer.android.worktime.beta.ui.ReportListActivity.onReportSelected(ReportListActivity.java:97)
05-28 14:24:37.905: E/AndroidRuntime(1775): at de.webducer.android.worktime.beta.ui.fragment.ReportSelectorSpinnerFragment$1.onItemSelected(ReportSelectorSpinnerFragment.java:78)
05-28 14:24:37.905: E/AndroidRuntime(1775): at android.widget.AdapterView.fireOnSelected(AdapterView.java:882)
05-28 14:24:37.905: E/AndroidRuntime(1775): at android.widget.AdapterView.access$200(AdapterView.java:48)
05-28 14:24:37.905: E/AndroidRuntime(1775): at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:848)
05-28 14:24:37.905: E/AndroidRuntime(1775): at android.os.Handler.handleCallback(Handler.java:605)
05-28 14:24:37.905: E/AndroidRuntime(1775): at android.os.Handler.dispatchMessage(Handler.java:92)
05-28 14:24:37.905: E/AndroidRuntime(1775): at android.os.Looper.loop(Looper.java:137)
05-28 14:24:37.905: E/AndroidRuntime(1775): at android.app.ActivityThread.main(ActivityThread.java:4424)
05-28 14:24:37.905: E/AndroidRuntime(1775): at java.lang.reflect.Method.invokeNative(Native Method)
05-28 14:24:37.905: E/AndroidRuntime(1775): at java.lang.reflect.Method.invoke(Method.java:511)
05-28 14:24:37.905: E/AndroidRuntime(1775): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-28 14:24:37.905: E/AndroidRuntime(1775): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-28 14:24:37.905: E/AndroidRuntime(1775): at dalvik.system.NativeStart.main(Native Method)

我不明白为什么。相同的代码(但对于另一个列表)在另一个 FragmentActivity 上运行良好。

最佳答案

找到原因了:

@Override
public Loader<Cursor> onCreateLoader(int id, Bundle extra) {
CursorLoader returnValue = null;
if (_ReportId > 0) {
switch (id) {
case _LM_REPORTS:
returnValue = new CursorLoader(getActivity(),
ReportContentProvider.CONTENT_URI_REPORT_DATA,
null,
ReportTable.COLUMN_ID + " =?",
new String[] { String.valueOf(_ReportId) },
null);
break;

default:
break;
}
}
return returnValue;
}

Loader 总是要运行。条件 if (_ReportId > 1) 产生了异常。没有条件,代码运行正常。

关于android - LoaderManager 的 restartLoader 方法中的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10784846/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com