活动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时,不存储先前的状态,因此项目列表消失了,而在我的理解中,它应该从堆栈中检索。而是调用onDestroy of B(不仅仅是C)。我不想保留活动C中的数据,而是回到应保持其状态的父级。它基本上应该记住选择哪个类别来显示其项目子集。我正在使用API 25。
我尝试过:在B的片段或活动中覆盖onSaveInstanceState。废除碎片并将列表放入活动本身。但是,当导航回来时,savedInstanceState始终为null。
如何确保我的列表可以重新创建?
编辑:清单包含:
<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>
答案 0 :(得分:0)
当我意识到问题实际上是OnDestroy在导航回来时总是被调用时,我找到了解决方案。感谢@gokhan,我知道它与启动模式有关。根据{{3}}回答,活动B在清单中需要这一行: 机器人:launchMode = “singleTop”