Passaggio di dati tra i frammenti contenuti in un'attività

Ho un'attività A con 3 frammenti. Ogni frammento sostituisce l'altro, quindi in un dato momento solo 1 è visibile.

HomeFragment ha 2 textviews avvolti all'interno di 2 cardviews. Ogni scheda visualizza un valore di text proveniente da Fragmento1 e Fragmento2. Quando faccio clic su dire Card1, arrivo al frammento1.

  • utilizzando l'artefatto con repository locale in cordova
  • Come get la vista dal layout dell'intestazione del cassetto con il binding nell'attività?
  • Come implementare un android: background che non si estende?
  • ArrayAdapter in android per creare listview semplice
  • Android - C'è un modo per ruotare un toast di 90 gradi?
  • La fusione manifesta non è rioutput: uses-sdk: minSdkVersion 10 non può essere inferiore alla versione L dichiarata in libreria com.android.support:appcompat-v7:21.0.0-rc1
  • Fragment1 ha alcuni cardviews, quando seleziono uno di essi riporto a HomeFragment e aggiornato il text della carta in base alla mia selezione in Fragment1. Qui è l'istruzione switch, a seconda di quale utente sceglie l'utente che lo metto in un pacchetto e lo passa HomeFragment.

    switch (v.getId()) { case R.id.card_view0: Fragment1Bundle.putString("Test", "Testing"); bundle.putBundle("Fragment1Bundle", Fragment1Bundle); fragmentTransaction.setCustomAnimations(R.anim.slideup, R.anim.slidedown, R.anim.slideup, R.anim.slidedown); fragmentTransaction.replace(R.id.content_frame, fragment); fragment.setArguments(bundle); fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); break; 

    Il frammento2 ha lo stesso comportmento del frammento 1.

     switch (v.getId()) { case R.id.card_view0: Fragment2Bundle.putString("Test2", "Tetsing"); bundle.putBundle("Fragment2Bundle", Fragment2Bundle); fragmentTransaction.setCustomAnimations(R.anim.slideup, R.anim.slidedown, R.anim.slideup, R.anim.slidedown); fragmentTransaction.replace(R.id.content_frame, fragment); fragment.setArguments(bundle); fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); break; 

    La mia sfida è che io sto usando i pacchetti per passare i dati tra i frammenti, il mio frammento di casa viene aggiornato con i dati che esso parte dal frammento1 ma quando vado al frammento 2 e dopo aver fatto la selezione tornare al frammento Home, i miei dati fragment1 sono impostati su default . Questo è quello che sto facendo in Home Fragments onCreateView ()

      try { bundle1 = getArguments().getBundle("Fragment1Bundle"); bundle2 = getArguments().getBundle("Fragment2Bundle"); tv.setText(bundle1.getString("Test") == null ? null : bundle1.getString("Test")); tv2.setText(bundle2.getString("Test2") == null ? nul : bundle2.getString("Test2")); } catch (NullPointerException e) { Log.d(TAG, e.printStackTrace()); } 

    So che sto creando un nuovo Homefragment nella transazione di frammento in frammento1 e in frammento2, come posso mantenere in giro solo un esempio di frammento di casa.

  • MediaStore.Images.Thumbnails.getThumbnail restituisce thumbnail anziché NULL
  • Webview Android apre la pagina nel browser predefinito invece del mio webview
  • Massima memory nativa che può essere assegnata ad un'applicazione android
  • Qual è l'esatto significato della versione della piattaforma Android NDK rispetto al livello API?
  • Come formattare / cancellare SDCARD dell'emulatore (/ mnt / sdcard)
  • Cosa getLine1Number () restituisce con i telefoni dual SIM?
  • One Solution collect form web for “Passaggio di dati tra i frammenti contenuti in un'attività”

    Un altro disegno consigliato da Google è quello di utilizzare l' attività principale e due frammenti (nel tuo caso frammento1 e frammento2). Posso vedere il tuo problema di passare il pacchetto di dati a HomeFragment. Questo disegno suggerito utilizza MainActivity dichiarato statico (può essere richiesto per il rilascio scoping). E utilizza un'interface da stabilire tra Attività e un frammento. Penso che l'interface sia più facile che passare il bundle al HomeFragment.

    Una pagina web di Google è @ Comunicare con altri frammenti . Questo non è solo il mio parere. Un buon collegamento SO, penso, è come passare i dati tra frammenti .

    Snippet di codice dalla pagina web …

    Un esempio di comunicazione di Fragment to Activity:

     public class HeadlinesFragment extends ListFragment { OnHeadlineSelectedListener mCallback; // Container Activity must implement this interface public interface OnHeadlineSelectedListener { public void onArticleSelected(int position); } ... 

    Un esempio di comunicazione Attività a frammento:

     public static class MainActivity extends Activity implements HeadlinesFragment.OnHeadlineSelectedListener{ ... public void onArticleSelected(int position) { // The user selected the headline of an article from the HeadlinesFragment // Do something here to display that article } } 

    Nota:

    • OnHeadlineSelectedListener è l'interface creata dal frammento.
    • Il metodo creato suArticleSelected ha una position parametro, che viene dal ListView in ListFragment (nel campione).
    • È ancora ansible impostare i bundle dei dati e submit dati tra Attività e Frammento. Tuttavia non ho inviato dati da frammento a attività. Normalmente uso il frammento per gestire molti degli aggiornamenti dell'interface utente.
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.