我有 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按两次设备后退按钮时,我最终使用之前的ListView数据进入Activit_A。所以,如果我尝试点击任何项目,我会得到例外
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
如何避免这种情况?
谢谢
答案 0 :(得分:1)
您可以在dependency
中存储SharedPreferences
值,并根据dependency
Activity_A
onResume()
值填充您的列表
答案 1 :(得分:1)
要返回上一个活动,您不应该致电新intent
。只需致电finish()
上的ACtivity B
即可。然后在onResume()
的{{1}}中,使用新值更新Activity A
。
您在此处将listview
称为新活动,之前的Activity A
仍在Activity A
中。因此,当您按下时,您将到达backstack
,这是您的第一个活动。但填充ACtivity A
的值已发生变化。因此,当您尝试单击任何内容时,会发生异常。这就是问题所在。
因此,当您将值更改为listview
时,请在listview
中调用finish()
。它会带你回到Activity B
。在活动A的Activity A
中,更新onResume()
答案 2 :(得分:0)
在活动A 中您有 ListView
在活动A , onResume()方法中为 ListView 设置适配器。
当您通过意图导航到 Activity_B 并更改
的值时<强>依赖即可。在按钮上点击不再重新开始活动A 刚刚完成
<强> Activity_B 即可。然后将自动调用活动A 的 onResume()方法
再次加载 listview 。因此,对 listview
的值产生影响注意:不要忘记将依赖声明为静态。