我有以下型号:
MainActivity
导航(通过按钮)到ActivityA
。
ActivityA
将记录列表显示为ListView
(来自SQLite
数据库)。
如果我点击任何记录,意图将启动ActivityB
,显示要编辑的所选记录的数据。
如果我按下设备后退按钮,则会将我带回ActivityA
。
ActivityB
有一个'保存'按钮,如果点击将打开ActivityA
的新意图和更新的记录(编辑后),此按钮将finish()
ActivityB
。
如果我按下设备后退按钮(保存ActivityB
并打开ActivityA
后),则会在更新前将数据转到旧版ActivityA
(旧版ActivityA
),然后在第二次点击设备返回按钮时,它将返回MainActivity
。
问题是:如何让设备返回按钮始终返回到分层父级,而不是转到以前的打开活动?
OR
如果用户点击ActivityA
中的保存按钮,如何终止ActivityB
的旧实例?
感谢您的帮助。
答案 0 :(得分:3)
在ActivityB
中,保存后,您应该拨打finish()
而不是打开ActivityA
的新实例。您应该ActivityA
重新查询并更新ListView
。
答案 1 :(得分:2)
您可以在用于启动Intent
的{{1}}中指定FLAG_ACTIVITY_CLEAR_TOP
标记。
ActivityA
如果正在启动的Intent intent = new Intent(this, ActivityA.class);
intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP );
startActivity(intent);
已在当前任务中运行,则其上的所有其他活动将被关闭,包括ActivityA
,并且ActivityA
将使用新的Intent重新启动。无需在ActivityA
明确调用finish()
。
答案 2 :(得分:0)
只需在活动的finish()
中添加OnPause()
即可
将此方法添加到Activity。
@Overrride
public void onBackPressed(View v) {
Intent MainActivityIntent = new Intent(ActivityB.this, ActivityA.Class);
startActivity(MainActivityIntent);
super.onBackPressed();
}
试试这个,它确实有用......