连接到蓝牙设备时,我有一个显示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 。您的问题很可能是progressDialognull,因为重新创建“ Activity ”后,该变量没有再设置。

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

以前是使用Activity.dismissDialogActivity.showDialog完成的,但现在已弃用。

更多信息:using dialog fragments

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

10-12 05:57