Android之间的onBackPressed()不同

时间:2015-02-13 13:28:18

标签: android android-actionbar

我有一个包含2个活动的应用程序,第一个从http加载数据并显示标题,第二个是特定标题的详细信息。
在从第二个屏幕返回的硬件上,第一页不会重新加载,这很好 在操作栏上,页面正在重新加载。

我试着用这个:

        case android.R.id.home:
            this.onBackPressed();
            break;

但它还在重装......

尝试阅读这些主题:l Difference between actionBar back button and android back button
Differences between hardware back button and navigation bar back button
Android - Overriding ActionBar back and device back button

我知道如何调试或修复它?

感谢。

4 个答案:

答案 0 :(得分:2)

您的解决方法无法正常工作的原因是您之后只需要return。当您只有break时,您的代码可能最终会调用 super.onOptionsItemSelected(item)然后重新加载第一个活动。

case android.R.id.home:
    this.onBackPressed();
    return;

这不是推荐的方法,因为它打破了Android的导航设计模式,概述了UP或祖先和后退或时间导航之间的差异。

  

向上按钮用于根据屏幕之间的分层关系在应用内导航。系统后退按钮用于按反向时间顺序顺序,通过用户最近使用的屏幕的历史进行导航。

有关http://developer.android.com/design/patterns/navigation.html

的更多信息

答案 1 :(得分:1)

我有同样的问题。在我的情况下受影响的东西 - > 如果您在活动的父级活动中使用 导航栏后退按钮 返回,则会调用 onNewIntent 方法。 与 硬件后退按钮 不同。

答案 2 :(得分:0)

尝试使用:

http://developer.android.com/reference/android/view/KeyEvent.Callback.html#onKeyDown(int,android.view.KeyEvent)而不是按下后退。

例如:

   @Override
   public boolean onKeyDown(int keyCode, KeyEvent event) {

        return super.onKeyDown(keyCode, event);

}

并查找event.getKeyCode()== KeyEvent.KEYCODE_BACK

答案 3 :(得分:0)

如果按下后退按钮时所需的行为无效,则应覆盖onBackPressed并不对其执行任何操作,如下所示:

@Override
public void onBackPressed() {
    /* do nothing */
}