I have a Fragment
FR1
che contiene più Nested
Fragments
; FRa
, FRb
, FRc
. Questi Nested
Fragments
vengono modificati premendo Buttons
nel layout di FR1
. Ciascuno del Nested
Fragments
ha diversi campi di input al loro interno; che includono cose come EditTexts
, NumberPickers
e Spinners
. Quando il mio utente passa e inserisce tutti i valori per lo Nested
Fragments
, FR1
(il frammento principale) ha un pulsante di invio.Invio di dati da frammenti nidificati a frammento padre
Come posso dunque, recuperare i miei valori dalla mia Nested
Fragments
e portarli in FR1
.
- Tutti
Views
sono dichiarati e di programmazione gestita all'interno di ogniNested
Fragment
. - Il genitore
Fragment
,FR1
gestisce la transazione delNested
Fragments
.
Spero che questa domanda è abbastanza chiara e non sono sicuro se il codice è necessario inviare, ma se qualcuno si sente altrimenti posso farlo.
EDIT 1:
Ecco come aggiungo la mia Nested
Fragments
:
tempRangeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getChildFragmentManager().beginTransaction()
.add(R.id.settings_fragment_tertiary_nest, tempFrag)
.commit();
}
});
scheduleButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getChildFragmentManager().beginTransaction()
.add(R.id.settings_fragment_tertiary_nest, scheduleFrag)
.commit();
}
});
alertsButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getChildFragmentManager().beginTransaction()
.add(R.id.settings_fragment_tertiary_nest, alertsFrag)
.commit();
}
});
submitProfile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
constructNewProfile();
}
});
dove il mio metodo constructNewProfile()
ha bisogno dei valori dalla mia Nested
Fragments
.
public Fragment tempFrag = fragment_profile_settings_temperature
.newInstance();
public Fragment scheduleFrag= fragment_profile_settings_schedules
.newInstance();
public Fragment alertsFrag = fragment_profile_settings_alerts
.newInstance();
Quanto sopra si riferisce ai campi del frammento principale; e come sono inizialmente istanziati.
getParentFragment() funziona solo in API 17+, quindi questo la risposta dovrebbe essere esplicita o non è abbastanza chiara – cesards
@uDevel Cosa fa 'onAttachFragment (getParentFragment());' (nel passaggio 2)? È nel 'Attività'? –
@antonio, no, è nel frammento annidato. Il punto è controllare se il frammento genitore ha implementato il listener in modo che sia possibile interagire con il frammento genitore dal frammento annidato chiamando il metodo definito nell'interfaccia del listener. – uDevel