0

我有兩個選項卡,Tab1和Tab2的主要活動。標籤和片段導航問題

Tab1有一個ListFragment。 Tab2有一個Webview片段。

如果我在ListFragment上選擇一個列表項,它將導航到DetailFragment。然後,如果我單擊Tab2然後按Tab1,我仍然查看DetailFragment。但是如果我按下這裏,會出現一個空白片段。

我該如何解決?


編輯。有些代碼:

public class MainActivity extends FragmentActivity { 

private FragmentTabHost mTabHost; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.ac_main_view); 
    mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost); 
    mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent); 

    Bundle b = new Bundle(); 
    b.putString("key", "inbox"); 
    mTabHost.addTab(mTabHost.newTabSpec("inbox").setIndicator("", getResources().getDrawable(R.drawable.ac_tab_indicator_inbox)), InboxFragment.class, b); 
    // 
    b = new Bundle(); 
    b.putString("key", "ac_app"); 
    mTabHost.addTab(mTabHost.newTabSpec("ac_app").setIndicator("", getResources().getDrawable(R.drawable.ac_tab_indicator_wall)), ACFragment.class, b); 

    TabWidget tabWd = (TabWidget) findViewById(android.R.id.tabs); 
    if (tabWd != null) { 
     tabWd.setBackgroundColor(getResources().getColor(R.color.light_gray)); 
    } 
} 

public void navigateToDetail(ACMessage msg) { 
    InboxDetailMessageFragment frDetail = new InboxDetailMessageFragment(); 
    frDetail.setMsg(msg); 

    FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 

    ft.setCustomAnimations(R.anim.left_to_rigth, R.anim.right_to_left, R.anim.left_to_rigth_out, R.anim.right_to_left_out); 
    ft.replace(R.id.realtabcontent, frDetail); 
    ft.addToBackStack(null); 
    ft.commitAllowingStateLoss(); 
} 

}

+0

什麼張貼一些代碼? – user1567896

+0

這有幫助嗎? http://stackoverflow.com/a/12093385/517561 – Sparky

回答

2

難道你比你呈現更多的初始化標籤?這可能是你獲得空白頁面的原因。至於片段不切換部分,您是否正確使用了必要的回調方法?

@Override 
    public void onPageSelected(int position) { 
     // TODO Auto-generated method stub 
     mActionBar.setSelectedNavigationItem(position); //mTabHost in this case maybe 
    } 

此外,您還可以檢查onTabSelected()方法

public void onTabSelected(Tab tab, FragmentTransaction ft) { 
    Object tag = tab.getTag(); 
    Context context; 
    for (int i=0; i<mTabs.size(); i++) { 
     if (mTabs.get(i) == tag) { 
      mViewPager.setCurrentItem(i); 
      mActionBar.setTitle(tab.getContentDescription()); 
      System.out.println(tab.getContentDescription()); 
     } 
    }