使用操作栏选项卡交换片段

时间:2013-03-26 13:29:14

标签: android tabs android-actionbar

我的应用程序中有3个片段分别分为3个标签[1] [2] [3]。

想象一下,我在片段[1]上使用了一个按钮,它将使带有初始文本“X”的TextView变为“Y”Ex:tv.setText("I'm a new text");

因此,当我在选项卡之间导航并返回选项卡[1]时,TextView将返回原始文本。就好像onCreate()再次调用一样。

我希望以某种方式在我的片段中调用onStop(),在我在标签之间切换时保留我的视图的所有属性(例如文本,可见性等)。

谢谢!

---- 编辑! ----

好吧,我找到了我想要的解决方案!这很简单,我宣布:

mPager = (ViewPager) findViewById(R.id.pager);
mPager.setOffscreenPageLimit(3); //Number of fragments that I wish to store in memory 

2 个答案:

答案 0 :(得分:0)

好吧,这是因为实际上正在调用onCreate。如果我是你,我会使用ViewPager。这样,只需将offScreenElementNumber设置为2即可立即加载所有片段,并保留其状态!

看看这个:

http://tamsler.blogspot.com.es/2011/10/android-viewpager-and-fragments.html

答案 1 :(得分:0)

再次调用onCreate方法。您可以通过覆盖onSavedInstanceState来保存值,并将它们返回到onActivityCreated方法中。例如,让我们保存布尔值(你可以保存你想要的任何东西 - 字符串,整数等...):

保存值:

public void onSaveInstanceState(Bundle outState) {
        outState.putBoolean("booleanValue", true);
}

恢复该值(您也可以在onCreate中调用它):

    protected void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
            if (savedInstanceState != null && savedInstanceState.containsKey("booleanValue")) {
                boolean myBoolean = savedInstanceState.getBoolean("booleanValue");
            }
    }