我有一个
Fragment Activity
托管着 Map
和 ListActivity
。我想在Activity
上按下后退按钮时放置一个方法,但似乎根本不起作用。我的 Log
甚至没有印在 Stacktrace
上。
这里可能出了什么问题?
方法如下:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK ) {
Log.e("Test","Back Button Clicked");
this.finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
如果您想要此类功能,则需要在 Activity 中覆盖它,然后将 YourBackPressed 接口添加到所有片段,每当按下后退按钮时就可以调用相关片段。
@Override
public void onBackPressed(){
Toast.makeText(getBaseContext(), "back button pressed", Toast.LENGTH_SHORT).show();
Log.e("Test","Back Button Clicked");
this.finish();
}
也许尝试删除“if”语句,看看会发生什么?
尝试一下,它可能会根据您的需要工作,
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Log.e("Test","Back Button Clicked");
Intent backpage = new Intent(CurrentActivity.this,BackPageActivity.cls);
startActivity(backpage);
CurrentActivity.this.finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
问题已解决:
如何在Fragment中实现onBackPressed()?
为了在 Fragment 上使用后退按钮,您还需要在您的子 Activity 上声明
onKeyDown
/onBackPressed()
方法。