gpt4 book ai didi

java - 如何防止 ProgressDialog 在 Android 中取消屏幕旋转更改?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:35:27 25 4
gpt4 key购买 nike

我有一个在连接到蓝牙设备时显示 ProgressDialog 的 Activity 。它工作正常,直到 ProgressDialog 启动时屏幕方向发生变化。 ProgressDialog 消失,当连接建立后,app 调用 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。您的问题可能是 progressDialognull,因为在重新创建 Activity 之后,该变量没有再次设置。

您需要使用 DialogFragment并记住 activity lifecycle .您需要做的是跟踪对话框是否已显示,并使用 DialogFragment 在 OnCreate 中再次显示它。

以前是用 Activity.dismissDialog 完成的和 Activity.showDialog但这些现在已被弃用。

更多信息:using dialog fragments .

关于java - 如何防止 ProgressDialog 在 Android 中取消屏幕旋转更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14509873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com