Tengo una actividad con dos fragmentos: uno para mostrar productos en una vista de grilla y el otro para mostrar los productos que el usuario agrega a la orden (Fragmento de lista). Cuando el usuario hace clic en un producto en la vista de cuadrícula, lo que necesito es mostrar un cuadro de diálogo (DialogFragment) en el que solicite la cantidad de producto deseado. Luego, cuando el usuario haga clic en aceptar en el cuadro de diálogo, quiero que el producto aparezca en ListFragment.Comunicación entre fragmentos/cuadros de diálogo en android
Por un lado, tengo que pasar el producto objeto al cuadro de diálogo para mostrar su nombre como el título del cuadro de diálogo (por ejemplo). Así que lo que hice fue pasar de esta manera:
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();
}
}
Creo que es okey, corrígeme si me equivoco. Pero luego, en el evento onClick del botón positivo, tengo que recuperar la cantidad introducida en el diálogo, y luego pasarlo al otro fragmento (ListFragment), y luego debe mostrarse en la lista al instante.
¿Cómo podría hacer eso?
Gracias de antemano
Causas herencia cíclica? –
Creo firmemente que esta respuesta explica más acerca de la comunicación entre un Fragmento '(DialogFragment)' y una Actividad '(Principal)' Por favor, consulte este hilo con una pregunta similar: https://stackoverflow.com/q/18561119/3987745 –