gpt4 book ai didi

java - Android模态对话框堆叠

转载 作者:行者123 更新时间:2023-11-29 05:58:26 25 4
gpt4 key购买 nike

我的目标是在用户导航回我的应用程序时显示模态对话框。此模态对话框要求他们提供他们定义的 6 位 PIN。我是 Java GUI 和 Android 开发的新手,所以我的问题是......

我发现,如果用户在显示回车对话框时选择最小化应用程序,如果他们返回到应用程序,对话框就会相互堆叠。让他们输入 PIN 的次数与他们在 PIN 输入期间最小化并返回到应用程序的次数一样多。

/**
* On restart called when the app is being restarted on the screen
*/
@Override
public void onRestart() {
super.onRestart();



// must prompt with modal dialog for pin

final Dialog dialog = new Dialog(this);

dialog.setCancelable(false);

// check pin
dialog.setCanceledOnTouchOutside(false);
// set view to enterpin XML screen
dialog.setContentView(R.layout.enterpin);


// show dialog
if (!dialog.isShowing()) {
dialog.show();
}
// listen for button being clicked
Button button = (Button) dialog.findViewById(R.id.pinlogin);
button.setOnClickListener(new OnClickListener() {// anonymous inner
// class
// implementation
@Override
public void onClick(View v) {
EditText editText = (EditText) dialog
.findViewById(R.id.enterpintext);
try {
int enteredPin = Integer.parseInt(editText.getText()
.toString());
SharedPreferences sharedP = Prefs.get(WebViewActivity.this);
int temp = sharedP.getInt("pin", 0);
if (enteredPin == temp) {
pinCheck = true;



dialog.dismiss();
} else {
pinCheck = false;
dialog.setTitle("Incorrect Pin");
}
} catch (NumberFormatException e) {
Dialog dialog2 = new Dialog(WebViewActivity.this);
dialog2.setTitle("Enter Numbers Only");
dialog2.setCanceledOnTouchOutside(true);
dialog2.show();
}
}
});

}

有没有什么地方可以让我移动我的 Dialog 初始化而不觉得这是糟糕的编程习惯?我明白为什么我尝试的 dialog.isShowing() 方法不起作用,因为我的 Dialog 实例仅在该方法的生命周期内存在。

我还注意到,如果您将手机从垂直方向转为水平方向 90 度,或者反过来,我的对话框就会消失。有人可以指出发生这种强制重绘时调用的方法链,以便我可以重绘对话框吗?

最佳答案

我相信您正在寻找 onResume(); + onPause(); 而不是 onRestart(); 来创建对话框.您应该使用 onRestart(); 为要显示的 PIN 对话框设置标志,而不是创建对话框。

我建议您将它移至 onCreate(); 方法,使其成为您正在处理的 Activity 的属性,并简单地将其显示在 onResume(); 中。 方法(因为每次 Activity 激活时都会调用它,即使是第一次)。

此外,当方向改变时,您需要列出您想要监听方向改变事件(通过 Activity list 中的 android:configChanges="orientation")和 onConfigurationChanged(); 方法将在具有相应数据的 Activity Activity 上调用。然后,您可以将对话框重新绘制到新的方向。

关于java - Android模态对话框堆叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11119261/

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