Mam następujący własną implementację interfejsu w moim Fragment:NullPointerException w restartLoader metody LoaderManager
@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);
};
Raport FragmentActivity do tego fragmentu, że kolejny fragment (lista wyboru) wybrano jedną pozycję. Następnie ListFragment powinien załadować nowe dane z raportowanym identyfikatorem (_ReportId).
Ale otrzymuję NullPoinerException
na tym kodzie przed przejściem do metody onCreateLoader. Tutaj jest 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)
Nie rozumiem dlaczego. Ten sam kod (ale dla drugiej listy) działa dobrze na innym FragmentActivity.
Nadal nie rozumiem wyjaśnienia ... Czy mógłbyś rozwinąć nieco więcej? Co oznacza: "Loader zawsze działa"? – Entreco
Wierzę, że oznacza on, że jeśli _ReportId = -1, nie utworzyłoby to programu ładującego, więc wartość "returnValue = null". Następnie loadermanager spróbuje uruchomić ładowanie zerowe i rzuci wskaźnik zerowy. –
whats zgłaszane id tutaj –