工具栏后退按钮和onBackPressed方法的区别

Difference between toolbar back button and onBackPressed method

我有一个有多个活动的应用程序。一个例子是我的 MainActivity,它显示了一个项目列表,您可以从中打开某个项目的 "detail" 概览。

单击一个项目打开它后,我会像这样打开另一个 activity

final Intent intent = new Intent(getApplicationContext(), AddActivity.class);
getApplicationContext().startActivity(intent);

在工具栏中打开 activity 后,我有一个后退按钮。我想那个按钮是开箱即用的,因为我使用的是 android.support.v7.widget.Toolbar.

万一我在 MainActivity 上滚动了很远的列表然后决定打开一个新的 activity 然后在那个新的 activity 我点击工具栏后退按钮我是 returned 到 MainActivity 但它已刷新(它的 OnCreate 方法被调用)。

如果我打开第二个 activity 并且它有一个执行某些操作的按钮,最后 return 将您转到 MainActivity 从 FragmentActivity 调用 onBackPressed()已扩展(通过扩展 AppCompatActivity),它会 return 你到 MainActivity 但没有任何刷新你将能够继续你停止的地方。

我的问题是是否可以用此 onBackPressed() 行为替换工具栏后退按钮的当前行为?

我成功了。我需要做的就是覆盖 onSupportNavigateUp 以便在两个按钮上获得相同的行为。

@Override
public boolean onSupportNavigateUp() {
    onBackPressed(); // one inherited from android.support.v4.app.FragmentActivity

    return false;
}

您只需覆盖 onbackPressed 方法并在单击工具栏后退按钮时调用该方法即可。

@Override
public void onBackPressed() {
   super.onBackPressed()
}

单击该按钮时调用它。