Вкладка навигации в новом 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. Надеюсь, это поможет вам немного.

Другие вопросы по тегам