Android - 活动层次结构(后退按钮)

时间:2014-05-01 11:31:07

标签: android android-intent back-button

我有以下型号:

  • MainActivity导航(通过按钮)到ActivityA

  • ActivityA将记录列表显示为ListView(来自SQLite数据库)。

  • 如果我点击任何记录,意图将启动ActivityB,显示要编辑的所选记录的数据。

  • 如果我按下设备后退按钮,则会将我带回ActivityA

  • ActivityB有一个'保存'按钮,如果点击将打开ActivityA的新意图和更新的记录(编辑后),此按钮将finish() ActivityB

  • 如果我按下设备后退按钮(保存ActivityB并打开ActivityA后),则会在更新前将数据转到旧版ActivityA(旧版ActivityA),然后在第二次点击设备返回按钮时,它将返回MainActivity

问题是:如何让设备返回按钮始终返回到分层父级,而不是转到以前的打开活动?

OR

如果用户点击ActivityA中的保存按钮,如何终止ActivityB的旧实例?

感谢您的帮助。

3 个答案:

答案 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();
}

试试这个,它确实有用......