Mam działanie z dwoma fragmentami: jeden do wyświetlania produktów w widoku siatki, a drugi do wyświetlania produktów dodanych przez użytkownika do zamówienia (ListFragment). Gdy użytkownik kliknie produkt w widoku siatki, potrzebuję wyświetlić okno dialogowe (DialogFragment), w którym proszę o ilość żądanego produktu. Następnie, gdy użytkownik kliknie przycisk akceptacji w oknie dialogowym, chcę, aby produkt pojawił się w ListFragment.Komunikacja między fragmentami/okienkami w Androidzie
Z jednej strony, muszę przekazać produkt obiektowy do okna dialogowego, aby pokazać jego nazwę jako tytuł okna dialogowego (na przykład). Więc to, co zrobiłem, to przekazać to w ten sposób:
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();
}
}
Myślę, że to jest w porządku, popraw mnie, jeśli się mylę. Ale potem, w zdarzeniu onClick przycisku dodatniego, muszę pobrać ilość wprowadzoną w oknie dialogowym, a następnie przekazać ją do innego fragmentu (ListFragment), a następnie natychmiast wyświetlić na liście.
Jak mogę to zrobić?
góry dzięki
Powoduje cykliczne dziedziczenie? –
Jestem głęboko przekonany, że ta odpowiedź wyjaśnia więcej informacji na temat komunikacji między Fragmentem (DialogFragment) a Aktywnością '(Główna)' Proszę sprawdzić ten wątek z podobnym pytaniem: https://stackoverflow.com/q/18561119/3987745 –