J'ai déjà posé une question similaire auparavant, je n'ai pas eu de réponse et il semble que beaucoup d'autres personnes recherchent une réponse. Donc, je poste cette question pour obtenir, espérons-le, une réponse claire dont tout le monde peut bénéficier.
J'ai une activité avec 2 fragments. Je souhaite que fragment2 définisse une variable booléenne dans Activity lorsqu'une case à cocher est cochée afin que fragment1 puisse savoir si cette case a été cochée.
Ceci est mon code:
Activité:
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);
}
Fragment 1: (Où je veux lire le lol booléen défini dans l’activité ci-dessus:
@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
Fragment 2: Où je veux placer lf dans l'activité
.....
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
;
}
});
Le code ne compile pas et je ne sais pas comment définir lf dans l'activité ni comment le lire. Quelqu'un m'a suggéré d'obtenir getActivity (), mais je ne suis pas en mesure de voir la variable.
J'ai essayé de créer une fonction setlf (boolean jk) mais je ne parviens pas à la voir ...
Toute aide est la bienvenue :)
Plusieurs façons :
1) Activité -> Fragment
2) Activité -> Fragment
Dans votre fragment: crée une méthode publique
Dans votre activité: appelez une méthode publique fragment active:
getSupportFragmentManager () . findFragmentById (R.id.votre_fragment) .publicMethod (args)
3) Fragment -> Activité
4) Fragment -> Activité
Dans votre Fragment} _: appelé getter, setter ou autre méthode d'activité publique à l'aide de:
getActivity () . getSomething (), getActivity () . setSomething (args) ou getActivity () . une méthode (args)
Vous pouvez transmettre des données entre fragments de deux manières,
Tout d’abord, vous pouvez le faire en utilisant setArguments (...) et getArguments (....)
Deuxièmement, vous pouvez le faire en utilisant Rappeler
Vous pouvez aussi utiliser EventBus. C'est vraiment simple. https://github.com/greenrobot/EventBus
N'utilisez certainement pas de méthodes statiques comme mon ancienne réponse :)