0

Вчера я загрузил новый HoloEverywhere library. В настоящее время у меня проблема с навигацией по вкладке после поворота экрана.Вкладка навигации в новом 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) { 
} 
} 

И мой класс Fragment.

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; 
} 
} 

Когда я поворачиваю фрагмент экрана, который не отображается. Он отображается, когда я выбираю вкладку (которая в настоящее время не выбрана) вручную.

+0

Это была проблема, не связанная с HoloEverywhere. Я не должен использовать android.R.id.content. Больше информации об этом на [HoloEverywhere GitHub] (https://github.com/Prototik/HoloEverywhere/issues/456) – lukjar

ответ

0

Я просто решу проблему. я отправляю мой код здесь и посмотреть, если те могут помочь вам: 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. При повороте устройства и изменении Ortiention фрагмент снова воссоздается. Поэтому добавьте if clase, чтобы проверить, есть ли здесь один здесь.

Но я использую обычный фрагмент в Android. Надеюсь, это поможет вам немного.