Hola buen dia, estoy trabajando con fragments y estoy tratando de comunicarlos entre ellos pero quisiera tener una orientación de cual seria la mejor practica para lograr esto, en realidad tengo 4 contenedores que estarán en una pantalla (por petición del cliente) y la iteracion entre dichos contenedores sera continua dos de ellas serán contenedores de fragments (RelativeLayouts) y las otras dos serán una barra superior y una inferior con filtros y acciones.
La intención principal es poder comunicar el Fragment y el MainActivity haciendo eso siento que ya tengo el 50% de la aplicacion. Espero me puedan dar una idea de lo que pueda hacer, de ante mano gracias.
public class MainActivity extends AppCompatActivity implements View.OnTouchListener,ClientesFragment.OnFragmentInteractionListener {
private ImageButton btnVentas,btnCuentas,btnStock,btnSiguiente,btnLiquidacion;
private ClientesFragment ClientFragment;
private CuentasFragment CuentasFrgmnt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InicializarComponentes();
}
public CuentasFragment getCuentasFrgmnt() {
if(CuentasFrgmnt ==null)
{CuentasFrgmnt = new CuentasFragment();}
return CuentasFrgmnt;
}
public ClientesFragment getClientFragment() {
if(ClientFragment ==null)
{ClientFragment = new ClientesFragment();}
return ClientFragment;
}
@Override
private void cambiarFragmento(View view) {
switch (view.getId())
{
case R.id.cuentas: CargarFragmento(getCuentasFrgmnt()); break;
case R.id.balance:CargarFragmento(getClientFragment()); break;
case R.id.siguiente: break;
}
}
@Override
public void onFragmentInteraction(int id) {
}
}
**ClientesFragment**
package com.salemobile.essis.magnus;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.salemobile.essis.magnus.Adaptadores.ClienteListAdapter;
import com.salemobile.essis.magnus.Entidades.Clientes;
import com.salemobile.essis.magnus.dummy.DummyContent;
import java.util.ArrayList;
public class ClientesFragment extends Fragment implements AbsListView.OnItemClickListener {
private ListView lista;
ArrayList<Clientes> clientes=new ArrayList<Clientes>();
private OnFragmentInteractionListener mListener;
private AbsListView mListView;
private ListAdapter mAdapter;
public static ClientesFragment newInstance(String param1, String param2) {
ClientesFragment fragment = new ClientesFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
public ClientesFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_clientes, container, false);
mListView = (AbsListView) view.findViewById(android.R.id.list);
((AdapterView<ListAdapter>) mListView).setAdapter(mAdapter);
mListView.setOnItemClickListener(this);
lista = (ListView)view.findViewById(android.R.id.list);
Clientes yo = new Clientes("Cristhian","infinito");
clientes.add(yo);
yo = new Clientes("Alberto","infinito");
clientes.add(yo);
yo = new Clientes("Teresita","infinito");
clientes.add(yo);
yo = new Clientes("Juan","infinito");
clientes.add(yo);
lista.setAdapter(new ClienteListAdapter(clientes));
lista.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String mensajeDialogo = "¿Desea realizar operaciones con el usuario "+ clientes.get(position).getNombre().toString()+ " ?";
new AlertDialog.Builder(getActivity())
.setTitle("Continuar Transaccion")
.setMessage(mensajeDialogo)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
})
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do nothing
}
})
.setIcon(android.R.drawable.ic_dialog_info)
.show();
}
});
return view;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (OnFragmentInteractionListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnFragmentInteractionListener");
}
}
@Override
public void onDetach() {
super.onDetach();
mListener = null;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (null != mListener) {
mListener.onFragmentInteraction(position);
}
}
public void setEmptyText(CharSequence emptyText) {
View emptyView = mListView.getEmptyView();
if (emptyView instanceof TextView) {
((TextView) emptyView).setText(emptyText);
}
}
public interface OnFragmentInteractionListener {
public void onFragmentInteraction(int position);
}
}