Вкладка навигации в новом HoloEverywhere не отображает фрагмент после поворота экрана
Вчера я скачал новую библиотеку HoloEverywhere. В настоящее время у меня проблема с навигацией по вкладкам после поворота экрана.
Моя домашняя активность:
public class MainActivity extends Activity implements TabListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setUpTabs();
}
private void setUpTabs() {
String[] titles = {
"First", "Second",
};
ActionBar supportActionBar = getSupportActionBar();
for (int i = 0; i < titles.length; i++) {
ActionBar.Tab tab = supportActionBar.newTab();
tab.setText(titles[i]);
tab.setTag(MyFragment.TAG);
tab.setTabListener(this);
supportActionBar.addTab(tab, false);
}
supportActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
supportActionBar.setSelectedNavigationItem(0);
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction fragmentTransaction) {
final String fragmentTag = tab.getTag().toString();
Fragment fragment = getSupportFragmentManager().findFragmentByTag(fragmentTag);
if (fragment == null) {
fragment = new MyFragment();
fragmentTransaction.add(android.R.id.content, fragment, fragmentTag);
} else {
fragmentTransaction.attach(fragment);
}
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction fragmentTransaction) {
Fragment fragment = getSupportFragmentManager().findFragmentByTag((String) tab.getTag());
if (fragment != null) {
fragmentTransaction.detach(fragment);
}
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction fragmentTransaction) {
}
}
И мой класс Фрагмент.
public class MyFragment extends Fragment {
public static final String TAG = MyFragment.class.getCanonicalName();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = new View(getActivity());
view.setBackgroundColor(Color.BLACK);
return view;
}
}
При повороте экрана фрагмент не отображается. Отображается, когда я выбираю вкладку (которая в данный момент не выбрана) вручную.
1 ответ
Я просто решаю проблему. Я публикую здесь свой код и посмотрю, могут ли они вам помочь:D
if (savedInstanceState == null){
TabHomeFragment homeFragment = new TabHomeFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.container, homeFragment, "home_fragment").commit();
}else{
TabHomeFragment homeFragment = (TabHomeFragment) getSupportFragmentManager().findFragmentByTag("home_fragment");
}
Эти коды находятся в методе OnCreate. Когда устройство вращается и ориентация меняется, фрагмент снова воссоздается. Поэтому добавьте условие if, чтобы проверить, есть ли оно здесь.
Но я использую обычный фрагмент в Android. Надеюсь, это поможет вам немного.