我有一个包含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
我知道如何调试或修复它?
感谢。
答案 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 */
}