我试图覆盖onBackPressed()。但是,当我单击操作栏中的后退按钮时,它似乎无法检测到。
我目前有这段代码:
@Override
public void onBackPressed() {
Log.i("DATA", "Hit onBackPressed()");
super.onBackPressed();
}
日志消息永远不会出现在LogCat中。我知道这个日志语句是有效的,因为它是从另一个方法复制的,它带有一个在LogCat中显示的不同消息。
我已经搜索了答案,并且我尝试使用onKeyDown并检测它是否被点击的BACK按钮但我仍然有同样的问题。 有关该项目的信息:
非常感谢任何帮助!!
编辑:
这是我的工作代码的副本(这是测试代码,因此活动名称不具描述性):
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);
}
}
}
消息"点击操作栏后退按钮"现在出现在LogCat中。
答案 0 :(得分:22)
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);
}
}
答案 1 :(得分:0)
请尝试使用此代码,
public class MainActivity2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
Toast.makeText(getApplicationContext(), "back press is call", Toast.LENGTH_LONG).show();
}
}