【发布时间】:2014-11-21 02:54:02
【问题描述】:
我正在尝试覆盖 onBackPressed()。但是,当我单击操作栏中的后退按钮时,它似乎没有检测到。
我目前有这个代码:
@Override
public void onBackPressed() {
Log.i("DATA", "Hit onBackPressed()");
super.onBackPressed();
}
日志消息永远不会出现在 LogCat 中。我知道这个日志语句是有效的,因为它是从另一个方法复制而来的,并且在 LogCat 中显示了不同的消息。
我已经搜索了答案,我尝试使用 onKeyDown 并检测是否是单击了 BACK 按钮,但我仍然遇到同样的问题。 项目信息:
- Android Studio 0.9.3
- 方法位于空白活动中
- 目标 SDK 21
- 最小 SDK 15
- 测试设备是三星 Galaxy 5(不是模拟器)
任何帮助将不胜感激!
编辑:
这是我的工作代码的副本(这是测试代码,因此活动名称不是描述性的):
public class MainActivity2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_activity2);
getActionBar().setDisplayHomeAsUpEnabled(true);//Displays the back button
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main_activity2, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Log.i("DATA", "Hit Actionbar Back Button");
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
消息“Hit Actionbar Back Button”现在出现在 LogCat 中。
【问题讨论】:
-
the back button in the action bar.因为操作栏中的按钮不是后退按钮。它是up按钮。见developer.android.com/training/implementing-navigation/…