我正在使用ActionBarSherlock與導航選項卡和多個片段的應用程序。Android:片段堆棧混淆與ActionBar和標籤
我有三個導航選項卡,每個選項卡都有一個或多個子視圖。我也有三個選項菜單項與一個或多個子視圖。當我在每個選項卡或選項菜單中深入查看視圖時,一切正常。每個初始子視圖都是一個調用詳細視圖或視圖的ListFragment。
當我在子視圖或選項菜單片段中開始切換標籤時遇到問題。我的視圖開始與新視圖下方的前一個視圖重疊。
這裏是我的TabListener:
class MyTabsListener implements ActionBar.TabListener {
public SherlockListFragment fragment;
public MyTabsListener(SherlockListFragment fragment) {
this.fragment = fragment;
}
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
ft.replace(android.R.id.content, fragment);
}
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
ft.remove(fragment);
}
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
// Don't care if a tab is reselected, no special handling required
}
這是我的選擇菜單:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// initialize variables
FragmentManager fm = null;
FragmentTransaction ft = null;
ActionBar actionBar = getSupportActionBar();
// check to see which action item was selected
switch (item.getItemId()) {
case android.R.id.home:
// initialize variables
fm = this.getSupportFragmentManager();
ft = fm.beginTransaction();
if (fm.getBackStackEntryCount() > 0) {
fm.popBackStack();
ft.commit();
}else {
actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(false);
}
return true;
case R.id.menuitem_search:
onSearchRequested();
return true;
case R.id.menuitem_contacts:
ContactListFragment contactListFragment = new ContactListFragment();
ft = getSupportFragmentManager().beginTransaction();
ft.replace(android.R.id.content, contactListFragment);
ft.addToBackStack(null);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
return true;
case R.id.menuitem_isolation:
ISOListFragment isoListFragment = new ISOListFragment();
ft = getSupportFragmentManager().beginTransaction();
ft.replace(android.R.id.content, isoListFragment);
ft.addToBackStack(null);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
return true;
case R.id.menuitem_water:
H2OListFragment h2oListFragment = new H2OListFragment();
ft = getSupportFragmentManager().beginTransaction();
ft.replace(android.R.id.content, h2oListFragment);
ft.addToBackStack(null);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
我對所有的片段之一MainActivity。處理鑽取子視圖和ActionBar導航選項卡時,如何處理後臺堆棧?任何幫助或建議將不勝感激!
。你做到了嗎? – Noodles 2012-08-23 06:15:58