Привет!
Зашел в тупик. Два дня уже читаю по результаты поиска по actionbar tab fragment savedInstanceState и подобным.
У меня есть MainActivity с 3 закладками в ActionBar.
1 закладка - карта
2 закладка - ListFragment1
3 закладка - ListFragment2
По клику на элементе ListFragment1 я заменяю фрагмент на ListFragment3. И все прекрасно, пока не поворачиваю экран.
При перевороте у меня на 2 закладке отображаются и ListFragment1 и ListFragment3.
Подскажите, пожалуйста, что почитать, посмотреть.
MainActivity как в уроке
Код: Выделить всё
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bar = getActionBar();
bar.setDisplayShowTitleEnabled(false);
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
tab = bar.newTab();
tab.setText(getString(R.string.title_map_activity));
tab.setTabListener(new MainTabListener<MapFragment>(this, MAP_TAG, MapFragment.class));
bar.addTab(tab);
tab = bar.newTab();
tab.setText(getString(R.string.title_catalog_activity));
tab.setTabListener(new MainTabListener<CatalogFragment>(this, CATALOG_TAG, CatalogFragment.class));
bar.addTab(tab);
tab = bar.newTab();
tab.setText(getString(R.string.title_my_activity));
tab.setTabListener(new MainTabListener<MyHikesFragment>(this, MYHIKES_TAG, MyHikesFragment.class));
bar.addTab(tab);
if (savedInstanceState != null){
int index = savedInstanceState.getInt("selected_tab_index", 0);
bar.setSelectedNavigationItem(index);
}else {
bar.setSelectedNavigationItem(prefs.getInt("TAB_INDEX", 0));
}
}
MainTabListener тоже как в уроке не буду его приводить
CatalogFragment (фрагмент, который на закладке 2)
Код: Выделить всё
ublic class CatalogFragment extends ListFragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
CountryArrayAdapter adapter = new CountryArrayAdapter(getActivity(), countryListGenerator());
setListAdapter(adapter);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
CitiesFragment citiesFragment = new CitiesFragment();
Bundle bundle = new Bundle();
bundle.putString("COUNTRY", countryListGenerator().get(position).getCountryName());
citiesFragment.setArguments(bundle);
FragmentTransaction fragmentTransaction = getActivity().getFragmentManager().beginTransaction();
fragmentTransaction.remove(this);
fragmentTransaction.replace(android.R.id.tabcontent, citiesFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
Toast.makeText(getActivity(), "position = " + getActivity().getActionBar().getTabAt(1).getText(), Toast.LENGTH_SHORT).show();
}
private ArrayList<Country> countryListGenerator (){
int max = 25;
ArrayList<Country> countries = new ArrayList<Country>();
for (int i = 0; i <= max; i ++) {
Country c = new Country();
c.setCountryName("Country" + i);
c.setHikesNumber(i + i +" hikes");
c.setFlag(getResources().getDrawable(R.drawable.russia));
countries.add(c);
}
return countries;
}
}
Кстати, когда делаю только fragmentTransaction.replace(android.R.id.tabcontent, citiesFragment), то "старый" фрагмент остается, по-этому удалил.
Но при повороте экрана я его опять создаю...