Ho un'attività con due frammenti: uno per mostrare i prodotti in un gridview e l'altro per mostrare i prodotti che l'utente aggiunge all'ordine (ListFragment). Quando l'utente fa clic su un prodotto nella visualizzazione griglia, ciò di cui ho bisogno è di visualizzare una finestra di dialogo (DialogFragment) in cui chiedo la quantità di prodotto desiderata. Quindi, quando l'utente fa clic su accetta nella finestra di dialogo, voglio che il prodotto appaia in ListFragment.Comunicazione tra frammenti/finestre di dialogo in Android
Da una parte, devo passare il prodotto oggetto alla finestra di dialogo per mostrare il suo nome come titolo della finestra di dialogo (ad esempio). Quindi quello che ho fatto è stato quello di passare in questo modo:
public static class ProductDialog extends DialogFragment {
static ProductDialog newInstance(ProductVO product) {
ProductDialog f = new ProductDialog();
Bundle args = new Bundle();
args.putSerializable("product", product);
f.setArguments(args);
return f;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
ProductVO product = (ProductVO) getArguments().getSerializable("product");
return new AlertDialog.Builder(getActivity())
.setIcon(R.drawable.ic_dialog_add)
.setTitle(R.string.add_product)
...
.setPositiveButton(R.string.accept,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
}
)
.setNegativeButton(R.string.cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
}
)
.create();
}
}
penso che sia okey, correggetemi se sbaglio. Ma poi, nell'evento onClick del pulsante positivo devo recuperare la quantità introdotta nella finestra di dialogo, e poi passarla all'altro frammento (il ListFragment), e quindi dovrebbe essere visualizzato immediatamente nella lista.
Come potrei farlo?
Grazie in anticipo
Provoca l'ereditarietà ciclica? –
Ritengo fortemente che questa risposta spieghi di più sulla comunicazione tra un frammento '(DialogFragment)' e un'attività '(Principale)' Si prega di controllare questa discussione con una domanda simile: https://stackoverflow.com/q/18561119/3987745 –