0

我在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() 之前关闭前一个对话框。

4

3 回答 3

0

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

@Override
public void onPause() {
    super.onPause();
    if(myDialog.isVisible()) {
          myDialog.dismiss();
    }
}
于 2013-04-19T14:55:03.167 回答
0

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

@Override
protected void onStop() {
    dialog.dismiss();
}
于 2013-04-19T15:15:34.390 回答
0

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

于 2013-04-19T15:18:29.887 回答