java - 移动到新 Activity 并返回上一个 Activity 时保存字符串数组列表的内容

标签 java android listview android-arrayadapter savestate

我的主要 Activity 有 3 个图像按钮。这些充当选项卡/类别,单击时会弹出 3 个不同的 Activity 。我的主页选项卡上有一个 ListView ,其中填充了从网站提取的数据。该应用程序允许用户通过单击顶部的选项卡图标(这会弹出一个新 Activity )来导航类别。

我在 onSaveInstanceState 中使用了 .putStringArrayList(,) ,在 onRestoreInstanceState 中使用了 .getStringArrayList() 。

我的问题:

当我更新主页选项卡上的 ListView 时,单击顶部的另一个选项卡导航到新 Activity ,然后按“后退”硬键返回主页选项卡 Activity ,列表内容将保留。

但是,如果我更新列表,导航到新选项卡( Activity ),然后通过单击主页图标/选项卡(而不是硬“后退”键)导航回主页 Activity ,则列表内容会消失并且必须重新加载。

实际上,在我看来,即使用户感觉他要返回到上一个选项卡,应用程序也会假设它正在前进到该选项卡,并且那里会丢失一些数据。

如何解决这个问题?

谢谢!

这是我的代码:

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");
    }
            .
            .
            .
           }

最佳答案

您应该使用应用程序的 PersistentState (SharedPreferences) 所以使 您的 Activity 上的 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...

关于java - 移动到新 Activity 并返回上一个 Activity 时保存字符串数组列表的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17842568/

相关文章:

android - 最后的json值显示在android中的expandablelistview中

java - 正则表达式模式需要帮助 Java toString() 方法

java - TrustStore 初始化失败但 KeyStore 成功

java - Android:通过id查找按钮

android - MPAndroidChart v3.x.x : upgraded from 2. x.x 标签

android - 通过 USB 调试 Android Wear 设备

android - 在 Android 中跳过 getView

java - 使用 Java Scanner 的 hasNext(Pattern) 查找前导 '+'

java - 将 Spring 批处理连接到 Spring 集成工作流程

c# - ListView问题: it does not Jump to the selected item