Wie man eine Variable von Activity zu Fragment übergibt und sie zurückgibt?

Ich mache zurzeit eine Android-App, und ich möchte ein Datum zwischen Aktivität und Fragment übergeben. Meine Aktivität hat eine Schaltfläche, die das Fragment öffnet: DatePickerFragment.

Auf meiner Tätigkeit zeige ich ein Datum, das ich mit dem Fragment ändern möchte. Also möchte ich das Datum an den Datepicker weitergeben und es an die Aktivität zurücksenden.

Ich habe viele Lösungen ausprobiert, aber keiner arbeitet. Der einfache Weg wäre ein Argument, aber das kann man nicht mit Fragmenten machen.

  • onSaveInstanceState speichert nicht meine Werte (onCreate input Bundle ist immer null)
  • So löschen Sie vorherigen Aktivitätsstapel und beenden Sie die Anwendung auf der Rücktaste?
  • Auf Android, wie schaltet man Aktivitäten programmgesteuert ein?
  • Rufen Sie die benutzerdefinierte Aktivität als startActivityForResult an
  • Aktuelle Aktivität aus den letzten Aufgaben ausschließen
  • Wie beenden Sie die Aktivität beim Starten anderer Aktivitäten in Android?
  • Android: Wie kann man findViewById (R.id.xxx) in einer Klasse verarbeiten, die von der View-Klasse erbt / erweitert wird?
  • Starten Sie die Hauptaktivität, wenn der Aktivitätsstapel leer ist
  • 3 Solutions collect form web for “Wie man eine Variable von Activity zu Fragment übergibt und sie zurückgibt?”

    Um Informationen an ein Fragment weiterzugeben, legen Sie Array, wenn Sie es erstellen, und Sie können dieses Argument später auf der Methode onCreate oder onCreateView Ihres Fragments abrufen.

    Auf der newInstance-Funktion deines Fragments fügst du die Argumente hinzu, die du dir senden möchtest:

    /** * Create a new instance of DetailsFragment, initialized to * show the text at 'index'. */ public static DetailsFragment newInstance(int index) { DetailsFragment f = new DetailsFragment(); // Supply index input as an argument. Bundle args = new Bundle(); args.putInt("index", index); f.setArguments(args); return f; } 

    Dann können Sie in dem Fragment auf der Methode onCreate oder onCreateView die Argumente wie folgt abrufen:

     Bundle args = getArguments(); int index = args.getInt("index", 0); 

    Wenn du jetzt von deinem Fragment mit deiner Aktivität (Senden oder nicht Daten) kommunizieren möchtest , musst du Schnittstellen verwenden. Die Art, wie Sie dies tun können, wird in der Dokumentation Tutorial der Kommunikation zwischen Fragmenten wirklich gut erklärt. Weil alle Fragmente zwischeneinander durch die Aktivität kommunizieren, können Sie in diesem Tutorial sehen, wie Sie Daten aus dem eigentlichen Fragment an seinen Aktivitätscontainer senden können, um diese Daten über die Aktivität zu nutzen oder sie an ein anderes Fragment zu senden, das Ihre Aktivität enthält.

    Dokumentation Tutorial:

    http://developer.android.com/training/basics/fragments/communicating.html

    Senden von Daten aus Activity zu einem Fragment

    Aktivität:

     Bundle bundle = new Bundle(); String myMessage = "Stackoverflow is cool!"; bundle.putString("message", myMessage ); FragmentClass fragInfo = new FragmentClass(); fragInfo.setArguments(bundle); transaction.replace(R.id.fragment_single, fragInfo); transaction.commit(); 

    Fragment:

    Lesen des Wertes im Fragment

     @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { String myValue = this.getArguments().getString("message"); ... ... ... } 

    Aber wenn du Werte von Fragment zu Aktivität senden willst, lest die Antwort von jpardogo, musst du Schnittstellen benötigen, mehr Info: Kommunizieren mit anderen Fragmenten

    Verwenden Sie die Bibliothek EventBus, um das Ereignis zu übergeben, das Ihre Variable hin und her enthalten könnte. Es ist eine gute Lösung, weil es Ihre Aktivitäten und Fragmente locker gekoppelt hält

    https://github.com/greenrobot/EventBus

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.