1

我有一个带有 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");
    }
            .
            .
            .
           }
4

1 回答 1

0

您应该使用应用程序的 PersistentState (SharedPreferences) 所以在您的活动上创建 onPause() 方法并保存 SharedPreferences

SharedPreferences settings = getSharedPreferences("key", MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.put....

然后 onCreate 检查 SharedPreferences.contains("key"); 并从那里重新加载数据

SharedPreferences settings = getSharedPreferences("key", MODE_PRIVATE);
settings.get...
于 2013-07-24T19:35:07.677 回答