在我们的应用程序中,我们有一个父线性布局,其中包含另一个线性布局作为child.Child线性布局只是处理为具有固定宽度和高度的对话框。正如预期的那样,如果我点击设备的后退键,整个活动就会从堆栈中删除。我只想要如果对话框打开,那么只有对话框应该被删除,即只有子线性布局应该消失。如何只关闭视图而不是后退按键上的活动? 请做一些帮助。
谢谢, AA
答案 0 :(得分:2)
您需要覆盖Activity.onBackPressed()
并执行您需要执行的操作:
@Override
public void onBackPressed() {
if (mDialogView.getVisibility() == View.VISIBLE) {
mDialogView.setVisibility(View.GONE);
} else {
super.onBackPressed();
}
}
答案 1 :(得分:1)
好吧,您可以将onBackPressed
覆盖为:
@Override
public void onBackPressed() {
if(!closeDialogsAndStuff()) {
super.onBackPressed();
}
}
private boolean closeDialogsAndStuff() {
/**
* check if dialogs should be closed and if so, close them and return true
* otherwise return false
* */
return true;
}
答案 2 :(得分:0)
实现onBackPressed方法(),并在该方法内部关闭对话框
@Override
public void onBackPressed()
{
// code here to show dialog
super.onBackPressed(); // optional depending on your needs
dialog.dismiss();
}
您可以询问是否有任何进一步的疑问:)
答案 3 :(得分:0)
将此代码放入您的活动中
public boolean onKeyDown(int keyCode, KeyEvent event) { //if user click back from device
if (keyCode == KeyEvent.KEYCODE_BACK) {
if(dialog.isShowing()) dialog.dismiss(); //dismiss dialog if shown
else finish(); //finish current activity
}
return true;
}