如何识别视图是否包含android中的对话框?

时间:2013-04-19 14:49:44

标签: android

我在android中显示对话框。同样这些对话框对象不是全局的,但它们的范围是在使用它的方法内。当我从背景到前景时,我需要确定是否显示对话框,如果是,则忽略它。我想知道如果是,如果视图是否显示对话框,则关闭对话框。 以下是我的代码:

public void reentersecuredpin()
    {
         final Dialog dialog = new Dialog(MainActivity.this,android.R.style.Theme_Translucent_NoTitleBar);
         dialog.setContentView(R.layout.successful_securepin_creation);
         dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
          dialog.setCancelable(true);

      Button btn_Ok;

      btn_Ok=(Button)dialog.findViewById(R.id.btn_Ok_successful_created_pin);
     TextView text1_success,text2_success;
     text1_success=(TextView)dialog.findViewById(R.id.text1_success);
     text2_success=(TextView)dialog.findViewById(R.id.text2_success);


     text1_success.setText("You have entered wrong Pin");
     text2_success.setText("Please re-enter your password again");


      btn_Ok.setOnClickListener(new View.OnClickListener() 
     {

                @Override
                public void onClick(View v) 
                {
                    dialog.cancel();

                }
            });

         dialog.show();

    }

所以当我从背景到前景时:

  @Override
    protected void onResume() 
    {

        super.onResume();
        background_to_foreground_dialog();

    }

background_to_foreground_dialog()显示另一个对话框。我在这里遇到的问题是background_to_foreground_dialog()在另一个对话框上绘制对话框(当用户进入后台时)。如何在绘制background_to_foreground_dialog()之前解除之前的对话框。< / p>

3 个答案:

答案 0 :(得分:0)

您可以在.isVisible()的对话框中查看onPause()方法,如果返回true,则关闭对话框。这样就可以在需要为下一个对话框关闭它之前将其解雇,当涉及到onResume()时,你可以安全地创建新的对话框,而不必担心解雇你的另一个。

@Override
public void onPause() {
    super.onPause();
    if(myDialog.isVisible()) {
          myDialog.dismiss();
    }
}

答案 1 :(得分:0)

当你的应用程序进入后台模式时,调用onStop方法的活动(请参阅activityLifecycle文档:Activity Lifecycle),在这里你可以忽略你的对话框。在Activity中创建全局Dialog变量,并使用它。例如:

@Override
protected void onStop() {
    dialog.dismiss();
}

答案 2 :(得分:0)

要检查是否显示了对话框,您必须将对话框声明为类中的属性,以便以后可以访问它并检查它是否可见。