繁体   English   中英

如何保存标签状态?

[英]How do I save the state of tabs?

在我的应用程序中,您使用每个选项卡中的界面。 但是,当您更改选项卡,然后返回它不会保存。 我该如何实施?

主要活动

 ActionBar.Tab tab1, tab2;
Fragment fragmentTab1 = new FragmentTab1();
Fragment fragmentTab2 = new FragmentTab2();

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_start_screen);

    ActionBar actionBar = getActionBar();
    assert actionBar != null;
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    final ActionBar bar = getActionBar();
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);


    tab1 = actionBar.newTab().setText("Skate Dice");
    tab2 = actionBar.newTab().setText("S.K.A.T.E");

    tab1.setTabListener(new MyTabListener(fragmentTab1));
    tab2.setTabListener(new MyTabListener(fragmentTab2));

    actionBar.addTab(tab1);
    actionBar.addTab(tab2);

标签听众

public class MyTabListener implements ActionBar.TabListener
{
Fragment fragment;

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

public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft)
{
    ft.replace(R.id.fragment_container, fragment);
}

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

public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft)
{
    // nothing done here
}

}

用户取消选择然后返回到选项卡时,如何保存选项卡的状态? 我是Android开发的新手,非常感谢您的任何建议/帮助!

看看这个答案 ,也检查这个项目

希望这些可以为您指明正确的方向。 要研究的另一个有用的项目是管理片段的生命周期 这使您能够在片段被暂停或破坏之前(例如保存它)对数据做一些事情。

编辑: http : //developer.android.com/reference/android/app/ActionBar.TabListener.html提供了一些很好的信息。 而不是完全删除您的片段,请使用attach()和detach()方法。 就像是:

    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        if (fragment == null) {
            ft.replace(R.id.fragment_container, fragment); // or use ft.add()
        } else {
            ft.attach(fragment);
        }
    }

    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        if (mFragment != null) {
            ft.detach(mFragment);
        }
    }

我尚未能够对其进行测试,但是应该遵循这些原则……很抱歉,需要另一个链接,但这也很有帮助。

最简单的答案-每个选项卡都需要有自己的TabListener,因此每个选项卡的片段都保存在TabListener实现中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM