当焦点在Android中丢失时,不要隐藏对话框

时间:2012-12-29 14:33:17

标签: android android-dialog

我的简单代码在Android中显示了一个Dialog。当用户在对话框外部单击或对话框失去焦点时,我不想隐藏对话框。我该怎么办?

DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
  public void onClick(DialogInterface dialog, int which) {
    switch (which) {
      case DialogInterface.BUTTON_POSITIVE:
        Toast.makeText(getApplicationContext(), "yes", Toast.LENGTH_LONG).show();
        break;
      case DialogInterface.BUTTON_NEGATIVE:
        Toast.makeText(getApplicationContext(), "no", Toast.LENGTH_LONG).show();
        break;
      }
    }
  };

按钮代码为:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure?")
  .setPositiveButton("Yes", dialogClickListener)
  .setNegativeButton("No", dialogClickListener).show();

感谢。

3 个答案:

答案 0 :(得分:5)

如果在dialog.setCanceledOnTouchOutside(true);

之外点击,则使用此隐藏功能

或使用此功能,如果点击了dialog.setCanceledOnTouchOutside(false);

,则不会隐藏

答案 1 :(得分:3)

使用dialog.setCanceledOnTouchOutside(false)会阻止对话框仅在用户点击框外时隐藏,但如果他点击Android设备上的“后退”按钮则不会隐藏;

使用dialog.setCancelable(false)会阻止两者。

答案 2 :(得分:0)

此示例代码工作正常,

final Dialog dialog = new Dialog(context);
        dialog.setContentView(R.layout.activity_test);
        dialog.setTitle("Title...");
        dialog.setCanceledOnTouchOutside(false);
        dialog.show();