Ho un ViewPager
con due Fragments
che istanzio nel onCreate
del mio FragmentActivity
.Android - Viewpager e frammenti, metodi non funzionanti
private List<Fragment> fragments = new Vector<Fragment>();
fragments.add(Fragment.instantiate(this,Frag_1.class.getName()));
fragments.add(Fragment.instantiate(this,Frag_2.class.getName()));
this.vPagerAdapter = new Adapt(super.getSupportFragmentManager(),fragments);
vPager = (ViewPager) super.findViewById(R.id.pager);
vPager.setAdapter(vPagerAdapter);
Il mio secondo Fragment
ha un metodo all'interno di quella telefonata che ho di aggiornare il mio ListView
-refreshList()
:
public class Frag_2 extends Fragment {
private ListView list;
private ArrayList<data> data;
private boolean firstCreation=true;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setRetainInstance(false);
}
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
}
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.layout, container, false);
list = (ListView) view.findViewById(R.id.lst);
//this.setRetainInstance(true);
return view;
}
public void refreshList(ArrayList <data> data){
if(data!=null){
ArrayAdapter<data> adapter = new Item_data_adapter(getActivity(),data);
list.setAdapter(adapter);}
}
}
Chiamato dal mio FragmentActivity
//Something
Frag_2 fr = (Frag_2) vPagerAdapter.getItem(1);
if (fr.getView() != null) {
fr.refreshList(data);
}
Funziona bene fino a cambiare l'orientamento dello schermo. Correggetemi se sbaglio, ma ero alla ricerca di ore e non ho trovato una soluzione o una buona spiegazione, il FragmentActivity
viene creata una sola volta e la Fragments
sono attaccati ad esso, ma la Fragments
ricreano sulle modifiche di configurazione. Ora, quando l'orientamento cambia non ottengo il View
da onCreate
così quando provo a ottenere il View
dal Fragment
restituisce null e il mio metodo refreshList()
non viene chiamato. Come posso risolvere questo?
Nessuno sa come si fa? – DLock
Sto riscontrando lo stesso problema e non ho trovato una soluzione. Sto iniziando a pensare che ci sia un bug in "FragmentManager" o qualcos'altro considerando che stiamo entrambi sperimentando questo. – adneal
e il tuo layout xml? questo non è un problema per i frammenti statici dichiarati nel layout dell'attività, ma questo non è il caso per i frammenti dinamici – chip