处理显示和隐藏片段的生命周期的正确方法?

时间:2013-07-20 05:04:17

标签: android android-fragments android-fragmentactivity android-lifecycle

在我的应用程序的主要部分,我一次打开2个片段。虽然只有一个显示。

第二个片段是从第一个片段的onCreateView方法创建的,因为第二个片段用于控制第一个片段。

        Bundle args = new Bundle();
        args.putInt(ReferenceSelectorFragment.ARG_TAB_INDEX, Tab.BOOK.position);
        mReferenceSelectorFragment.setArguments(args);
        fm.beginTransaction()
                .add(container.getId(), mReferenceSelectorFragment, FRAGMENT_TAGS[0])
                .hide(mReferenceSelectorFragment)
                .commit();

我正在使用片段事务正确隐藏和显示片段:

getActivity().getSupportFragmentManager().beginTransaction()
                .setCustomAnimations(R.anim.up_in, R.anim.up_out, R.anim.down_in, R.anim.down_out)
                .hide(ReaderFragment.this)
                .show(mReferenceSelectorFragment)
                .addToBackStack(null)
                .commit();

除了一个小小的缺陷之外,正如预期的那样,这非常有效。 当应用程序暂时最小化并且操作系统关闭进程时,再次打开应用程序时,尝试恢复先前的状态,两个片段将相互重置。意思是两者同时出现在彼此之上。(可以通过按应用程序上的主页按钮,然后使用DDMS终止正在运行的进程来复制。)

我已经尝试了一切来检测这一点并解决了这个问题,但事实证明,在退出流程后,以编程方式区分轮换和正在恢复的应用程序非常困难。 处理显示和隐藏片段的生命周期的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

这可能有助于您:https://stackoverflow.com/a/13306633/969325

基本上你可以在你的活动中传递一个空包super.onCreate(savedInstanceState);或者仅在尚未存在时创建新片段。我怀疑那是你的问题。