我无法使用ActionBar获得片段的正常工作 - 当我更改Tab时片段正确切换。但是,当我旋转手机,然后记得片段正确显示(取决于所选内容),但我无法切换到另一个选项卡。没有错误,没有什么,我不知道如何检查什么是错的片段没有显示在actionBar选项卡上方向更改后选择
MapHandlerFragment mMapHandler;
VehiclesFragment mVehiclesFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar ab = getSupportActionBar();
ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ab.setDisplayShowTitleEnabled(false);
ab.setDisplayShowHomeEnabled(false);
FragmentManager fm = getSupportFragmentManager();
mMapHandler = new MapHandlerFragment();
mVehiclesFragment = new VehiclesFragment();
if (savedInstanceState == null) {
fm.beginTransaction()
.add(android.R.id.content, mVehiclesFragment)
.add(android.R.id.content, mMapHandler)
.commit();
} else {
fm.beginTransaction()
.hide(mMapHandler)
.hide(mVehiclesFragment)
.commit();
}
Tab vehiclesTab = ab.newTab().setText("Pojazdy").setTag(FRAGMENT_VEHICLES)
.setTabListener(new MyTabsListener(mVehiclesFragment));
ab.addTab(vehiclesTab);
Tab mapTab = ab.newTab().setText("Mapa").setTag(FRAGMENT_MAP)
.setTabListener(new MyTabsListener(mMapHandler));
ab.addTab(mapTab);
if (savedInstanceState == null) {
ab.selectTab(mapTab);
} else {
String selected = savedInstanceState.getString(SELECTED_TAB);
if (selected == FRAGMENT_VEHICLES) {
ab.selectTab(vehiclesTab);
} else if (selected == FRAGMENT_MAP) {
ab.selectTab(mapTab);
}
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(SELECTED_TAB, mSelectedTab);
}
protected class MyTabsListener implements ActionBar.TabListener {
private Fragment fragment;
public MyTabsListener(Fragment fragment) {
this.fragment = fragment;
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
ft.show(fragment);
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
ft.hide(fragment);
}
}
}
我知道我不加整理碎片时savedInstanceState
不是null
,但如果这会是这样的,为什么选定的片段显示正确?此外,当我添加了片段,它们彼此叠加...
你是否检查过你的'onTabReselected'是否被调用,我敢打赌,因为没有任何内容可以处理它 – tyczj 2013-05-09 23:07:06
@tyczj是的,它被调用,但是我应该放在那里? – wasyl 2013-05-09 23:16:01
做任何你想要的应用程序时,选项卡被重新选择 – tyczj 2013-05-09 23:19:43