Ive ha già fatto una domanda simile e non ha ottenuto risposta e sembra che molti altri richiedano una risposta. Quindi sto postando questa domanda per ottenere una risposta chiara che tutti possano beneficiare.Condivisione dei dati tra frammenti e attività in Android
Ho un'attività con 2 frammenti. Voglio framment2 per impostare una variabile booleana in Attività quando una casella di controllo è selezionata in modo che frammento1 possa sapere se la casella di controllo è stata selezionata.
Questo è il mio codice:
attività:
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);
}
Frammento 1: (dove voglio leggere il lf booleano impostato in acitivity sopra:
@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
Frammento 2: Dove Voglio impostare lf nell'attività
.....
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
;
}
});
Il codice non viene compilato e non so come impostare lf nell'attività né come leggerlo. Qualcuno mi ha suggerito di fare getActivity() ma non sono in grado di vedere la variabile.
ho cercato di creare una funzione setlf (jk booleano), ma anche io non sono in grado di vederlo ...
Ogni aiuto è benvenuto :)
È questo l'unico modo per condividere dati passando argomenti tra i frammenti? non posso impostare e ottenere direttamente le variabili nell'attività? –
Altrimenti puoi usare sharedpreferences per la condivisione dei dati – RajeshVijayakumar
Sono abbastanza nuovo per questo, hai qualche esempio su setArguments e getArguments –