Ich muss ein Listview in einem Fragment aktualisieren, wenn eine Datei erfolgreich heruntergeladen wird. Also in meinem Download-Manager des BroadcastReceiver registriere ich diese neuen Rundfunkempfänger:Eine Listenansicht in einem Fragment von einem Broadcast-Empfänger aktualisieren
Intent intent = new Intent();
intent.setAction("CONTENTS_NOTIFICATION");
context.sendBroadcast(intent);
Und in meinem Fragmente in onCreateView ich den folgenden Code, um den Empfänger zu registrieren:
IntentFilter filter = new IntentFilter("CONTENTS_NOTIFICATION");
getActivity().getApplicationContext().registerReceiver(myReceiver, filter);
dann:
private BroadcastReceiver myReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
SQLiteDatabase db = DatabaseManager.getInstance(getActivity()).getWritableDatabase();
c = SelectedExperience.getSelectedExperiences(db);
String id_esperienza = "Selected Experience";
if (c.getCount() != 0) {
id_esperienza = c.getString(c.getColumnIndex(SelectedExperience.ID_ESPERIENZA));
}
populateListview(v, id_esperienza);
}
};
und am Ende:
public void onDestroyView() {
super.onDestroyView();
getActivity().getApplicationContext().unregisterReceiver(myReceiver);
}
Ich muss zwei dieser Rundfunkempfänger für zwei verschiedene Fragmente hinzufügen. Auf der ersten funktioniert alles gut. Wenn in der Anwendung der Benutzer auf dem Fragment ist, aktualisiert sie, während auf dem zweiten Fragment ich diese Fehler bekam:
03-15 07:32:40.474: E/AndroidRuntime(1692): FATAL EXCEPTION: main
03-15 07:32:40.474: E/AndroidRuntime(1692): java.lang.RuntimeException: Error receiving broadcast Intent { act=CONTENTS_NOTIFICATION flg=0x10 } in [email protected]
03-15 07:32:40.474: E/AndroidRuntime(1692): at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:768)
03-15 07:32:40.474: E/AndroidRuntime(1692): at android.os.Handler.handleCallback(Handler.java:725)
03-15 07:32:40.474: E/AndroidRuntime(1692): at android.os.Handler.dispatchMessage(Handler.java:92)
03-15 07:32:40.474: E/AndroidRuntime(1692): at android.os.Looper.loop(Looper.java:137)
03-15 07:32:40.474: E/AndroidRuntime(1692): at android.app.ActivityThread.main(ActivityThread.java:5191)
03-15 07:32:40.474: E/AndroidRuntime(1692): at java.lang.reflect.Method.invokeNative(Native Method)
03-15 07:32:40.474: E/AndroidRuntime(1692): at java.lang.reflect.Method.invoke(Method.java:511)
03-15 07:32:40.474: E/AndroidRuntime(1692): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
03-15 07:32:40.474: E/AndroidRuntime(1692): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
03-15 07:32:40.474: E/AndroidRuntime(1692): at dalvik.system.NativeStart.main(Native Method)
03-15 07:32:40.474: E/AndroidRuntime(1692): Caused by: java.lang.NullPointerException
03-15 07:32:40.474: E/AndroidRuntime(1692): at sample.actionscontentview.fragment.ContentsFragment.populateListview(ContentsFragment.java:194)
03-15 07:32:40.474: E/AndroidRuntime(1692): at sample.actionscontentview.fragment.ContentsFragment.access$0(ContentsFragment.java:111)
03-15 07:32:40.474: E/AndroidRuntime(1692): at sample.actionscontentview.fragment.ContentsFragment$1.onReceive(ContentsFragment.java:107)
03-15 07:32:40.474: E/AndroidRuntime(1692): at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:758)
03-15 07:32:40.474: E/AndroidRuntime(1692): ... 9 more
und der Code ist das gleiche! Ich kann nicht verstehen, warum es nicht funktioniert. Es besagt, dass es ein Problem mit populatelistView gibt, aber die gleiche Funktion funktioniert gut innerhalb des Fragments, wenn es nicht vom Broadcast-Empfänger aufgerufen wird.
Der einzige Unterschied, den ich zwischen diesen beiden Fragmenten denken kann, ist, dass derjenige, in dem das Update funktioniert, der erste ist, der geöffnet wird, wenn die Anwendung gestartet wird.
was ist die Zeilennr. 194 und poste den Code für populateListView – Atrix1987
Mein böser ... Der Fehler war in populatelistView, insbesondere habe ich die falsche Sicht übergeben !! Also funktioniert der Code gut! – phcaze