警报对话框在旋转屏幕时关闭
在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"
。