Android Back按钮 - 从下一个活动导航和返回时如何保留父状态



活动a在片段中具有类别列表(recyclerview(。单击项目时,将启动一个新的活动B,该活动还包含片段中的项目列表(RecyClerview(,通过适配器:

    myViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
           Intent dynamicCableView = new Intent(view.getContext(), CableOverview.class);
           dynamicItemView.putExtra("systemModel", systemModelList.get(position));
           view.getContext().startActivity(dynamicItemView);
        }`

单击其中一个,其中包含与该项目有关的数据的活动C,基本上是这样的:

public void goToAnActivity(View view) {
Intent Intent = new Intent(this, AnActivity.class);
startActivity(Intent);
}

当通过后退按钮从活动C返回其父活动B时,先前的状态未存储,因此项目列表消失了,而在我的理解中,应从堆栈中检索它。而是称为B(不仅是C的(on Destroy。我不想保留活动C中的数据,而是要回到其父母,以维持其状态。基本上,它应该记住选择哪种类别以显示其项目子集。我正在使用API 25。

我尝试了:在B的碎片或活动中覆盖了OnsaveInstancestate。取消片段并将清单放在活动本身中。但是,在返回时,SavedInstancestate始终是无效的。

如何确保可以重新创建我的列表?

编辑:清单包含:

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.Launcher">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

我在意识到该问题实际上是在导航后总是被调用时发现了解决方案。多亏了@gokhan,我知道这与启动模式有关。根据此答案,活动B需要在清单中以下线:Android:lainingMode =" Singletop"

最新更新