0

我的应用中有 3 个片段,分别分为 3 个选项卡 [1] [2] [3]。

想象一下,我在片段 [1] 上使用了一个按钮,它将使带有初始文本“X”的 TextView 变为“Y” 例如: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 
4

2 回答 2

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");
            }
    }
于 2013-03-26T13:34:12.253 回答
0

好吧,这是因为 onCreate 实际上被调用了。如果我是你,我会使用 ViewPager。这样,只需将 offScreenElementNumber 设置为 2,您就可以立即加载所有片段,并且它们将保持其状态!

看看这个:

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

于 2013-03-26T13:32:54.153 回答