我在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>
答案 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)
要检查是否显示了对话框,您必须将对话框声明为类中的属性,以便以后可以访问它并检查它是否可见。