0

我有一个Activity_A,其中有一个ListView,其数据取决于一个值,比如依赖项

从此Activity_B用户转到Activity_B,他可以在其中更改依赖项的值

由于此依赖项必须更改 ListView 中的数据,因此我需要重新加载 ListView,因此我这样做了:

if(//dependency is changed){
Intent intent = new Intent(Activity_B.this,Activity_A.class);
startActivity(intent);
}

ListView 填充了新数据。

问题:

当我从这个新加载的 Activity_A 按下设备后退按钮两次时,我最终会在 Activit_A 中使用以前的 ListView 数据。所以,如果我尝试点击任何项目,我会得到这个异常

The content of the adapter has changed but ListView  did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread

如何避免这种情况??

谢谢你

4

3 回答 3

1

您可以根据dependency_SharedPreferencesdependencyActivity_A onResume()

于 2012-10-18T08:43:56.543 回答
1

要返回上一个活动,您不应调用 new intent。只需调用finish()您的ACtivity B. 然后在你onResume()的 中,用新值Activity A更新。listview

这里你Activity A作为一个新的Activity调用,而前一个Activity A还在backstack. 因此,当您按下返回时,您将到达ACtivity A,这是您的第一个 Activity。但是填充的值listview已经改变。因此,当您尝试单击任何内容时,就会发生异常。那就是问题所在。

因此,当您将值更改为 时,listview请调用finish(). Activity B它会带你回到Activity A. 在onResume()活动 A 中,更新listview.

于 2012-10-18T08:57:04.060 回答
0

活动 A你有一个ListView

Activity A 的onResume ()方法中,您为ListView设置了适配器。

当您通过Intent导航到Activity_B 并更改

依赖。在按钮上单击不要重新开始活动A刚刚完成

活动_B。然后会自动调用Activity A的onResume()方法并

再次加载列表视图。因此改变了对列表视图值的影响

注意:不要忘记将依赖声明为静态。

于 2012-10-18T09:33:10.823 回答