为什么 activity 的 onBackPressed 没有被调用?
Why is activity's onBackPressed not getting called?
我正在重写 activity 中的 onBackPressed 方法:
@Override
public void onBackPressed() {
super.onBackPressed();
}
并且我正在将片段加起来如下:
fragmentManager.beginTransaction()
.add(R.id.frame_container, myFragment).addToBackStack("").commit();
问题是我的 onBackPressed 没有在 activity 中被调用。
但是当我把它改成:
replace(R.id.frame_container, myFragment).addToBackStack("").commit();
它按预期被调用。
我必须添加片段。如何解决这个问题?
@Override
public boolean onKeyUp(int keyCode, KeyEvent objEvent) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
onBackPressed();
return true;
}
return super.onKeyUp(keyCode, objEvent);
}
@Override
public void onBackPressed() {
goBack();
}
public void goBack() {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(
MyCaseActivity.this);
alertDialog.setTitle("");
alertDialog.setMessage("Are you sure you want to exit?");
alertDialog.setPositiveButton("YES",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
finish();
System.exit(0);
}
});
alertDialog.setNegativeButton("NO",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
alertDialog.show();
}
这对我有用。
试试这个,
覆盖以下方法。
@Override
public boolean onKeyDown(int code, KeyEvent e) {
Log.e(LOG_TAG, "down = " + code);
if(code == KeyEvent.KEYCODE_BACK){
return true;
}else{
return super.onKeyDown(code, e);
}
}
我正在重写 activity 中的 onBackPressed 方法:
@Override
public void onBackPressed() {
super.onBackPressed();
}
并且我正在将片段加起来如下:
fragmentManager.beginTransaction()
.add(R.id.frame_container, myFragment).addToBackStack("").commit();
问题是我的 onBackPressed 没有在 activity 中被调用。 但是当我把它改成:
replace(R.id.frame_container, myFragment).addToBackStack("").commit();
它按预期被调用。 我必须添加片段。如何解决这个问题?
@Override
public boolean onKeyUp(int keyCode, KeyEvent objEvent) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
onBackPressed();
return true;
}
return super.onKeyUp(keyCode, objEvent);
}
@Override
public void onBackPressed() {
goBack();
}
public void goBack() {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(
MyCaseActivity.this);
alertDialog.setTitle("");
alertDialog.setMessage("Are you sure you want to exit?");
alertDialog.setPositiveButton("YES",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
finish();
System.exit(0);
}
});
alertDialog.setNegativeButton("NO",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
alertDialog.show();
}
这对我有用。
试试这个,
覆盖以下方法。
@Override
public boolean onKeyDown(int code, KeyEvent e) {
Log.e(LOG_TAG, "down = " + code);
if(code == KeyEvent.KEYCODE_BACK){
return true;
}else{
return super.onKeyDown(code, e);
}
}