2016-06-29 14 views
2

Ich habe eine Aktivität, die einige Daten in geteilte Präferenzen schreibt, nachdem sie von einem Web-Service empfangen wurde, und auch Fragmente anzeigt. Diese Fragmente verwenden eine Methode, die diese gemeinsamen Präferenzen benötigt, um das Fragmentlayout zu füllen.Ein erstelltes Fragment neu erstellen?

Das Problem ist, dass wenn das Fragment anfänglich erstellt wird, diese gemeinsamen Einstellungen noch nicht geschrieben wurden und ohne sie das Fragment leer ist. Wie kann ich das Fragment neu erstellen, nachdem ich in "sharedpreferences" geschrieben habe?

+0

Normalerweise, wenn Sie etwas auf einer Aktivität oder einem Fragment neu erstellen müssen, die von einer bestimmten Logik abhängen, z. B. einem Rückruf von einem Dienst. Sie sollten diese Logik auf eine Methode anwenden, dann sollten Sie diese "Logik" ausführen, wenn Sie den Rückruf erhalten. –

+0

Also die Daten holen und dann die Aktivität mit den Fragmenten starten? – AlexF11

+0

Die Antwort von Larry ist korrekt, ich denke, dass das Fragment nicht neu erstellt werden kann. Wenn Sie möchten, versuchen Sie Folgendes: 'FragmentTransaction ft = getFragmentManager(). BeginTransaction(); ft.detach (this) .attach (this) .commit(); ' –

Antwort

1

Keine Notwendigkeit, die Fragment neu zu erstellen, das wäre eine sehr schwere Operation. Verwenden Sie SharedPreferences.registerOnSharedPreferenceChangeListener() von Ihrem Fragment, um einen Rückruf zu registrieren, der benachrichtigt wird, wenn Änderungen auftreten. Stellen Sie dann in Ihrer Fragment eine Instanz von etwas bereit, das SharedPreferences.OnSharedPreferenceChangeListener implementiert. Siehe registerOnsharedPreferenceChangeListener und OnSharedPreferenceChangeListener.

+0

Schön, wenn also die gemeinsamen Einstellungen aktualisiert werden, würde das Fragment seine Methode aufrufen, um diese Methode in der oncreateview aufzufüllen und nicht aufzurufen. Das macht eine Menge Sinn, ich werde es versuchen. – AlexF11

Verwandte Themen