警报对话框在旋转屏幕时关闭

在Android应用程序中,我有一个警告对话框,在旋转屏幕时它会被解散,我已经在堆栈溢出中找到很多类似于此的解决方案,但不是针对我的问题...

这是我的Alert Dialog编码...

private void callchangepswd() {

        AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
        alertDialog.setCancelable(true);
        View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.changepassword, null, false);

        EditText cemail = (EditText) view.findViewById(R.id.chagepswd_mail);
        EditText cphone = (EditText) view.findViewById(R.id.chagepswd_phone);
        Button verify=(Button)view.findViewById(R.id.verifybtn);

        alertDialog.setView(view);
        final AlertDialog dialogShow = alertDialog.create();
        dialogShow.show();

        verify.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialogShow.dismiss();
                newpassword();
            }
        });

    }

任何人都可以帮助从这里出来.....


旋转屏幕时, Activity被销毁并重新创建。 这就是你的Dialog消失的原因。

为了处理这种情况,你可以重载onSaveInstanceState ,在bundle中保存一个boolean ,告诉你是否显示对话框。 您还应该保持用户输入(电话和电子邮件)。

onRestoreInstanceState您需要重新创建对话框并用用户输入填充字段。 您可以在这里阅读更多关于活动生命周期的信息


您必须使用DialogFragment而不是AlertDialog,正如https://developer.android.com/guide/topics/ui/dialogs.html中所述。DialogFragment将在方向更改期间继续存在


无需使用SaveInstanceState 。 您可以在设备旋转后保存活动状态(包括对话框),方法是将orientation|screenSize添加到您的android:configChanges activity属性中

    <activity
        android:name=".MainActivity"
        android:configChanges="orientation|screenSize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

正如@greenapps在评论中正确指出的那样,您应该在调用对话框的每个活动中添加android:configChanges="orientation|screenSize"

链接地址: http://www.djcxy.com/p/26929.html

上一篇: Alert dialog closed while rotating the screen

下一篇: Bluetooth permanent discoverability not working