繁体   English   中英

使用正确的片段和状态恢复活动

[英]Restore activity with the right fragment and state

我有一个带有主菜单的应用程序,单击该主菜单可导航到其他活动。

这些活动之一是“搜索”,带有我更新了很多片段的容器。 它是一种搜索,只需3个步骤。 (步骤1,步骤2,步骤3)

当我进行其他活动并返回到搜索活动时,状态会丢失。

用正确的片段恢复活动的最佳方法是什么?

我尝试过android:launchMode =“ singleInstance” ,也尝试过intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT或Intent.FLAG_ACTIVITY_CLEAR_TOP)强制执行一个活动实例,并且确实可以正常工作,但第一次打开该活动需要时间(应用种类)停止工作,然后重新开始)

我想我不能只使用savedInstanceState(),因为每个片段都需要一些在上一个片段上选择的信息

有什么建议吗?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android">

    <!--Top bar Menu-->
    <include  layout="@layout/partials_top_bar"/>


    <FrameLayout
        android:windowSoftInputMode="adjustNothing"
        android:id="@+id/container"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </FrameLayout>


    <!--Bottom Bar Menu-->
    <include  layout="@layout/partials_bottom_bar"/>

</LinearLayout>

当用户选择某些操作时,我将使用

        activity.supportFragmentManager
                .beginTransaction()
                .replace(R.id.container, fragment)
                .addToBackStack(null)
                .commit()

编辑:找到了解决方案。 我打开SingleInstance时显示的“延迟” /应用程序冻结是由于删除所有活动的过渡动画引起的。 但是只有单实例活动会出现此延迟。 所以我要用这个。 十分感谢大家。

您可以在活动中创建一个静态变量“ state”,可以是String,并且当您更改Fragment时,您可以更改变量值,例如,当您更改为StepOneFragment时,请将其值设置为“ step_one”,StepTwoFragment-> “ step_two”,StepThreeFragment->“ step_three”,如果返回,则根据您所处的片段来更改变量值,然后在SearchActivity的onCreate中,对该变量进行切换,并根据值进行切换加载所需的片段。

希望能帮助到你

暂无
暂无

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

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