配置更改后关闭对话
Dismiss dialogue after configuration is changed
我目前正在编写一个蓝牙应用程序,只允许用户在纵向模式下使用它。但是,还有一些其他原因导致配置更改,迫使我向用户显示蓝牙连接已丢失。
在连接到设备时,我显示了一个提示输入密码的对话框。如果在显示此对话框时发生配置更改,我想将其关闭。因此,我在 onSaveInstanceState
、onDestroy
和 onCreate
中调用了一个辅助方法(如果保存的实例状态不为空)。
@Override
public void onCreate(Bundle savedInstanceState)
{
if (savedInstanceState != null)
{
this.tryDismiss();
}
super.onCreate(savedInstanceState);
}
@Override
public void onSaveInstanceState(Bundle outState)
{
System.out.println("Saving instance state!");
this.tryDismiss();
super.onSaveInstanceState(outState);
}
@Override
public void onDestroy()
{
System.out.println("Destroying dialogue!");
this.tryDismiss();
super.onDestroy();
}
public void tryDismiss()
{
try
{
System.out.println("DIE BART, DIE!");
this.dismissAllowingStateLoss();
}
catch (Exception closingException)
{
}
}
但是,对话仍然显示给用户。我读过类似的问题,但找不到解决这个问题的方法。
感谢您的帮助。提前致谢!
你可以轻松dismiss()
方法
http://developer.android.com/reference/android/app/Dialog.html
在显示对话的 activity 中使用强引用并在活动的 onSaveInstanceState
方法中调用 dismiss()
方法为我解决了这个问题。我知道,这不是最佳解决方案,但它确实有效。
@Override
protected void onSaveInstanceState(Bundle persistantState)
{
if (this.connectionPasswordDialogue != null)
{
this.connectionPasswordDialogue.dismiss();
}
}
强引用是指 activity:
内部使用的私有属性
private DialogueUserModePassword connectionPasswordDialogue;
我目前正在编写一个蓝牙应用程序,只允许用户在纵向模式下使用它。但是,还有一些其他原因导致配置更改,迫使我向用户显示蓝牙连接已丢失。
在连接到设备时,我显示了一个提示输入密码的对话框。如果在显示此对话框时发生配置更改,我想将其关闭。因此,我在 onSaveInstanceState
、onDestroy
和 onCreate
中调用了一个辅助方法(如果保存的实例状态不为空)。
@Override
public void onCreate(Bundle savedInstanceState)
{
if (savedInstanceState != null)
{
this.tryDismiss();
}
super.onCreate(savedInstanceState);
}
@Override
public void onSaveInstanceState(Bundle outState)
{
System.out.println("Saving instance state!");
this.tryDismiss();
super.onSaveInstanceState(outState);
}
@Override
public void onDestroy()
{
System.out.println("Destroying dialogue!");
this.tryDismiss();
super.onDestroy();
}
public void tryDismiss()
{
try
{
System.out.println("DIE BART, DIE!");
this.dismissAllowingStateLoss();
}
catch (Exception closingException)
{
}
}
但是,对话仍然显示给用户。我读过类似的问题,但找不到解决这个问题的方法。
感谢您的帮助。提前致谢!
你可以轻松dismiss()
方法
http://developer.android.com/reference/android/app/Dialog.html
在显示对话的 activity 中使用强引用并在活动的 onSaveInstanceState
方法中调用 dismiss()
方法为我解决了这个问题。我知道,这不是最佳解决方案,但它确实有效。
@Override
protected void onSaveInstanceState(Bundle persistantState)
{
if (this.connectionPasswordDialogue != null)
{
this.connectionPasswordDialogue.dismiss();
}
}
强引用是指 activity:
内部使用的私有属性private DialogueUserModePassword connectionPasswordDialogue;