如何只关闭后退按键上的视图而不是android中的整个活动?

时间:2014-01-07 11:14:18

标签: android

在我们的应用程序中,我们有一个父线性布局,其中包含另一个线性布局作为child.Child线性布局只是处理为具有固定宽度和高度的对话框。正如预期的那样,如果我点击设备的后退键,整个活动就会从堆栈中删除。我只想要如果对话框打开,那么只有对话框应该被删除,即只有子线性布局应该消失。如何只关闭视图而不是后退按键上的活动? 请做一些帮助。

谢谢, AA

4 个答案:

答案 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;
}