0

我有以下活动,它产生了 3 个选项卡,并将片段放入每个选项卡中。

public class ClientActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_client);
        ActionBar bar = getActionBar();
        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        ActionBar.Tab tabA = bar.newTab().setCustomView(R.layout.tab_a_layout);
        ActionBar.Tab tabB = bar.newTab().setCustomView(R.layout.tab_b_layout);
        ActionBar.Tab tabC = bar.newTab().setCustomView(R.layout.tab_c_layout);
        Fragment fragmentA = new firstTab();
        Fragment fragmentB = new secondTab();
        Fragment fragmentC = new thirdTab();
        tabA.setTabListener(new MyTabsListener(fragmentA));
        tabB.setTabListener(new MyTabsListener(fragmentB));
        tabC.setTabListener(new MyTabsListener(fragmentC));
        bar.addTab(tabA);
        bar.addTab(tabB);
        bar.addTab(tabC);
    }

    protected class MyTabsListener implements ActionBar.TabListener {
        private Fragment fragment;

        public MyTabsListener(Fragment fragment)
        {
            this.fragment = fragment;
        }

        @Override
        public void onTabSelected(Tab tab, FragmentTransaction ft)
        {
            ft.add(R.id.fragment_place, fragment, null);
        }

        @Override
        public void onTabReselected(Tab tab, FragmentTransaction ft) {
        }

        @Override
        public void onTabUnselected(Tab tab, FragmentTransaction ft) {
            ft.remove(fragment);            
        }
    }
}

在第一个片段(tabA)中,我有列表视图和侦听器,它们在点击时替换片段。

当我单击第二个选项卡时(在 tabA 上的列表视图上选择行之后),侦听器添加选项卡而不是替换它。
发生这种情况是因为 TabUnselected 删除了错误的片段(它是 first_tab,但在 listview 选择行上替换为 test_tab)。
假设我在每个选项卡上始终有 1 个片段,我如何使用 TabUnselected 上 ft 上的删除选项来删除选项卡上的当前片段?

谢谢

4

1 回答 1

0

通过将 TabSelected 上的 ft.add 更改为 ft.replace 来修复它:

    ft = getFragmentManager().beginTransaction();
    ft.replace(R.id.fragment_place, fragment);
    ft.commit();
于 2013-06-26T23:40:22.280 回答