tutorial studio programacion móviles fragments desde desarrollo curso aplicaciones activity abrir android android-fragments android-activity data-sharing

studio - manual de programacion android pdf



Intercambio de datos entre fragmentos y actividad en Android (4)

He hecho una pregunta similar antes y no obtuve una respuesta y parece que muchas otras personas están buscando una respuesta. Así que estoy publicando esta pregunta para poder obtener una respuesta clara de la que todos puedan beneficiarse.

Tengo una actividad con 2 fragmentos en ella. Quiero que fragment2 establezca una variable booleana en Activity cuando se marca una casilla para que fragment1 pueda saber si la casilla de verificación está marcada.

Este es mi Código:

Actividad:

public class modestab extends Activity{ public static Context appContext; public boolean lf=false; public void onCreate(Bundle savedInstanceState){ appContext=this; super.onCreate(savedInstanceState); ActionBar tabbar= getActionBar(); tabbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); ActionBar.Tab ModesTab =tabbar.newTab().setText("Modes"); ActionBar.Tab CatTab =tabbar.newTab().setText("Categories"); Fragment ModesFragment =new modes(); Fragment CatFragment =new cats(); ModesTab.setTabListener(new MyTabsListener(ModesFragment)); CattTab.setTabListener(new MyTabsListener(CatFragment)); tabbar.addTab(ModesTab); tabbar.addTab(CatTab); }

Fragmento 1: (Donde quiero leer el booleano si se establece en Acitivity arriba:

@TargetApi(11) public class tabmodes extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View V=inflater.inflate(R.layout.tab_modes, container, false); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if(lf==false) //lf here is the lf in Activity which I want to get

Fragmento 2: donde quiero establecer lf en Activity

..... lifecheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){ @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(lifecheck.isChecked()) getActivity().lf=true;//Where I want to set the lf flag in Activity ; } });

El código no se compila y no sé cómo configurar lf en la actividad ni cómo leerlo. Alguien sugirió que obtengo la actividad () pero no puedo ver la variable.

Traté de crear una función setlf (boolean jk) pero tampoco puedo verla ...

Cualquier ayuda es bienvenida :)


Muchas maneras :

1) Actividad -> Fragmento

2) Actividad -> Fragmento

3) Fragmento -> Actividad

4) Fragmento -> Actividad

  • En tu actividad : Crear getter y setter públicos u otros métodos
  • En su Fragmento : llamado getter de la actividad pública, setter u otros métodos que usan:

    getActivity() .getSomething (), getActivity() .setSomething (args) o getActivity() .someMethod (args)




//In fragment; String user = MainActivity.getUserName();

Los métodos estáticos son mi solución anterior, pero definitivamente una mala solución. No los uses así.