我有一个带有 3 个图像按钮的主要活动。这些充当卡/类别,单击时拔出3个不同的活动。我在主页选项卡上有一个列表视图,其中填充了从网站提取的数据。该应用程序允许用户通过单击顶部的选项卡图标来导航类别(这会拉出一个新活动)。
我在 onSaveInstanceState 中使用了 .putStringArrayList(,),在 onRestoreInstanceState 中使用了 .getStringArrayList()。
我的问题:
当我更新主页选项卡上的列表视图时,单击顶部的另一个选项卡以导航到新活动,然后按“返回”硬键返回主页选项卡活动,列表内容将保留。
但是,如果我更新列表,导航到新选项卡(活动),然后通过单击主页图标/选项卡(不是硬“返回”键)导航回主页活动,然后列表内容消失并且必须是重新加载。
实际上,在我看来,即使用户感觉他要回到上一个选项卡,应用程序也会假设它正在向前移动到该选项卡,并且那里有一些数据丢失。
我该如何解决这个问题?
谢谢!
这是我的代码:
int headlinessize;
int linkssize;
ArrayList<String> headlines = new ArrayList<String>();
ArrayList<String> links = new ArrayList<String>();
private ArrayAdapter<String> adapter;
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putStringArrayList("headlines", headlines);
savedInstanceState.putInt("headlinessize", headlinessize);
savedInstanceState.putStringArrayList("urls", links);
savedInstanceState.putInt("linkssize", linkssize);
super.onSaveInstanceState(savedInstanceState);
}
@SuppressWarnings("unchecked")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mainscreen);
if (savedInstanceState!= null){
headlines.addAll(savedInstanceState.getStringArrayList("headlines"));
links.addAll(savedInstanceState.getStringArrayList("urls"));
headlinessize=savedInstanceState.getInt("headlinessize");
linkssize=savedInstanceState.getInt("linkssize");
}
.
.
.
}