我试图覆盖onBackPressed()。但是,当我单击操作栏中的后退按钮时,似乎无法检测到。
我目前有以下代码:
@Override
public void onBackPressed() {
Log.i("DATA", "Hit onBackPressed()");
super.onBackPressed();
}
日志消息永远不会出现在LogCat中。我知道此日志语句有效,因为它是从另一种方法复制而来的,并且确实在LogCat中显示了不同的消息。
我已经搜索了答案,并且尝试使用onKeyDown并检测是否单击了“后退”按钮,但是我仍然遇到相同的问题。
有关项目的信息:
任何帮助将不胜感激!!
编辑:
这是我的工作代码的副本(这是测试代码,因此 Activity 名称不是描述性的):
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中。
最佳答案
当用户单击硬件后退按钮(或导航栏上的“向上”按钮)而不是操作栏上的按钮时,将调用onBackPressed()
。为此,您需要重写onOptionsItemSelected()
方法。例子:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// click on 'up' button in the action bar, handle it here
return true;
default:
return super.onOptionsItemSelected(item);
}
}