连接到蓝牙设备时,我有一个显示ProgressDialog的 Activity 。在ProgressDialog启动时,直到屏幕方向发生变化,它都可以正常工作。 ProgressDialog消失,建立连接后,应用程序调用progressDialog.dismiss();。此时,由于没有可关闭的ProgressDialog,应用程序崩溃。当屏幕方向改变时,如何防止ProgressDialog消失?
public void prepareViews(int ID, boolean state){
switch(ID){
case USERNAME_TEXTBOX:
LoginUsernameTextBox.setEnabled(state);
break;
case PASSWORD_TEXTBOX:
LoginPasswordTextBox.setEnabled(state);
break;
case LOGIN_BUTTON:
LoginButton.setEnabled(state);
break;
case LOGIN_PROGRESSBAR:
if(state == true){
LoginProgressBar.setVisibility(View.VISIBLE);
LoginProgressBar.setIndeterminate(true); }
else{
LoginProgressBar.setVisibility(View.GONE);
}
break;
case CONNECTING_DIALOG:
if(state == true){
progressDialog = ProgressDialog.show(MainActivity.this, "", "Connecting", true); }
else{
progressDialog.dismiss();
}
break;
}
}
最佳答案
请记住,旋转设备时Android会销毁并重新创建 Activity 。您的问题很可能是progressDialog
是null
,因为重新创建“ Activity ”后,该变量没有再设置。
您需要使用DialogFragment并记住activity lifecycle。您需要做的是跟踪对话框是否显示,并使用DialogFragment在OnCreate中再次显示它。
以前是使用Activity.dismissDialog和Activity.showDialog完成的,但现在已弃用。
更多信息:using dialog fragments。
关于java - 如何防止ProgressDialog在Android屏幕旋转变化中消失?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14509873/