0

Tab1 と Tab2 の 2 つのタブを持つメイン アクティビティがあります。

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

}

4

1 に答える 1

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());
        }
    }
于 2014-07-17T05:50:14.633 に答える