Android 多次调用OnCreateView/使用ActionBar和片段

Android 多次调用OnCreateView/使用ActionBar和片段,android,android-fragments,android-activity,android-actionbar,Android,Android Fragments,Android Activity,Android Actionbar,我将应用程序的一部分从活动切换到片段,这样我就可以使用整洁的ActionBar选项卡 然而,在完成转换之后,我遇到了一个问题:每当我切换到另一个选项卡时,就会再次创建该片段。每次我访问选项卡时,都会调用onCreate和onCreateView 我有4个选项卡,每个选项卡都用于打开其中一个片段: Fragment ShopFragment = new WebActivity(); Fragment SearchFragment = new SearchActivity(context); Fra

我将应用程序的一部分从活动切换到片段,这样我就可以使用整洁的ActionBar选项卡

然而,在完成转换之后,我遇到了一个问题:每当我切换到另一个选项卡时,就会再次创建该片段。每次我访问选项卡时,都会调用onCreate和onCreateView

我有4个选项卡,每个选项卡都用于打开其中一个片段:

Fragment ShopFragment = new WebActivity();
Fragment SearchFragment = new SearchActivity(context);
Fragment StoreFragment = new StoreLocatorActivity(context, this);
Fragment BlogsFragment = new BlogsActivity(context, this);
以下是我为侦听器编写的代码:

    class MyTabsListener implements ActionBar.TabListener {
        public Fragment fragment;

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

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

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

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

        }

    }
有人能给我指出正确的方向吗?

当你打电话时,Android将有效地执行一系列操作(对于当前添加到该容器中的所有片段)和(对于你提供的片段)。从
FragmentManager
中删除片段将导致片段被销毁,其状态将不再被管理。最明显的是,当您重新添加片段时,所有视图都将被重置。注意:由于您正在重用同一个片段实例,该片段仍将保留任何实例变量的值

解决这个问题的一个方法是使用和切换。这将导致重新创建片段视图(
onDestroyView()
&
onCreateView()
将被调用),但实例状态包将被保存并在调用之间返回给您,因此可以维护视图状态。这是它尝试在片段之间切换时所采用的方法

或者,您可以允许销毁片段,但可以独立地维护其保存状态。这将使用更少的内存,但以较慢的切换时间为代价。注释方法为和,与添加/删除结合使用。这就是我们所采取的方法


您可以查看和以获得实现提示。

有/选项,这样片段就不需要重新绘制/重新创建,
onCreate()
onCreateView()
就不会被重新调用。

有人知道我如何处理吗?这是一个解决方法。onCreate和onCreateView仍在被调用,保存状态需要做很多工作。难道没有一种方法可以保留已经绘制好的wach片段视图,然后替换它们吗?为什么要重新绘制它们呢?嗨,我正在使用ActionBar选项卡和attach and detach!请您用一些示例代码解释一下,在切换到其他选项卡时如何保存实例状态,然后在返回到选项卡时如何维护该状态!Thanks@kilaka你能解释一下你是如何让
保存状态
工作的吗?@MuhammadBabar-不知道。我使用show/hide-@kilaka,但分离和附加比显示和隐藏更有效。我猜!