Java 带有两次编辑的AlertDialog-按“确定”按钮时-->;启动新警报
这是一个非常愚蠢的问题,但我几天前刚用java为android启动了这个程序,我不知道该怎么办 所以当你按下按钮时,我想要一个AlertDialog。此AlertDialog需要2次编辑。当你按下OK时,它必须计算一些东西,并在新的AlertDialog中显示解决方案 这就是我得到的:Java 带有两次编辑的AlertDialog-按“确定”按钮时-->;启动新警报,java,android,this,android-alertdialog,builder,Java,Android,This,Android Alertdialog,Builder,这是一个非常愚蠢的问题,但我几天前刚用java为android启动了这个程序,我不知道该怎么办 所以当你按下按钮时,我想要一个AlertDialog。此AlertDialog需要2次编辑。当你按下OK时,它必须计算一些东西,并在新的AlertDialog中显示解决方案 这就是我得到的: public void btn_own(View view) { int a, b, c; final String s; AlertDialo
public void btn_own(View view) {
int a, b, c;
final String s;
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Enter range");
final EditText inputa = new EditText(this);
final EditText inputb = new EditText(this);
alert.setView(inputa);
alert.setView(inputb);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
int aa, bb, cc , e ;
aa = new Integer(String.valueOf(inputa));
bb = new Integer(String.valueOf(inputb));
cc = bb - aa;
Random rand = new Random();
int d = rand.nextInt(cc);
e = d + bb;
Integer out = new Integer(e);
s = out.toString();
new AlertDialog.Builder(this)
.setMessage(s)
.show();
}
});
}
最后一个“这”是错误的。我得到的信息是:
Builder(android.content.Context) in Builder cannot be applied to (android.content.DialogInterface.OnClickListener)
但是我不知道我能用什么来代替“这个”
另一个问题是,“this”上方的行中的“s”被标记。
无法为最终变量's'赋值。
希望你能帮助我
编辑: 我的新代码:
public void btn_own(View view) {
int a, b, c; // a : untere Grenze , b : obere Grenze
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Enter range");
final EditText inputa = new EditText(this);
final EditText inputb = new EditText(this);
alert.setView(inputa);
alert.setView(inputb);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
int aa = 0;
int bb = 0;
int cc = 0;
int e = 0;
try {
aa = Integer.parseInt(inputa.getText().toString());
} catch (NumberFormatException f) {
System.out.println("not a number: " + inputa.getText().toString());
f.printStackTrace();
}
try {
bb = Integer.parseInt(inputb.getText().toString());
} catch (NumberFormatException g) {
System.out.println("not a number: " + inputb.getText().toString());
g.printStackTrace();
}
cc = bb - aa;
Random rand = new Random();
int d = rand.nextInt(cc);
e = d + bb;
Integer out = new Integer(e);
s = out.toString();
new AlertDialog.Builder(Decider.this)
.setMessage(s)
.show();
}
});
alert.show();
}
错误:
现在它的工作原理是:我可以输入一个数字,然后得到另一个随机数。
但我怎么能让它像这样工作:我输入一个范围,然后得到一个随机数?
为什么它只查看一次编辑 不应将AlertDialogs嵌套在其他AlertDialogs中 因此:
new AlertDialog.Builder(this)
.setMessage(s)
.show();
将使用错误的上下文,但必须将活动作为上下文传递
尝试使用YourActivity.this
或view.getContext()
作为参数
更新:关于您的
NumberFormatException
您应该尝试以下方法:
try {
aa = Integer.parseInt(inputa.getText().toString());
} catch (NumberFormatException e) {
System.out.println("not a number: " + inputa.getText().toString());
e.printStackTrace();
}
但是你需要确保你的editText只允许数字 使用view.getContext()
而不是this
,后者引用OnClickListener上下文来创建AlertDialog,如下所示:
AlertDialog.Builder alert = new AlertDialog.Builder(view.getContext());
其次,如果您想更改
s
on Alert按钮上的值,请单击,然后从s
中删除final
,并在btn_own
方法之外声明它。尝试在活动中实现DialogInterface.OnClickListener(这样做更好,因为您不创建新对象,所以使用的资源更少,而且节省了电池)
然后用以下命令设置按钮:
alert.setPositiveButton("Ok", this);
要从字符串转换int,请使用:
aa = Integer.parseInt(inputa.getText()));
用try/catch包围它,以避免用户错误的输入和异常aa=Integer.parseInt(inputa.getText());还是同样的错误当我按下按钮时,我会得到一个编辑提示,当我按下OK时,应用程序会崩溃…谢谢你的更新,sry,但我在最后一个小时做了一些事情,所以,我编辑了我的代码,但我仍然得到无效的int。。。当我按下按钮时,应用程序会崩溃(我仍然只有一个编辑…),没有任何东西想要像我想要的那样工作…:D@QNikE让我们重试更新的代码!;-)如果它破坏了日志中的内容?okk用try/catch检查更新了它,问题是:aa和bb“可能没有初始化”,我仍然只有一次编辑,但我需要两次…好的,而不是
int aa,bb,cc,e代码>为变量分配初始值,比如intaa==0代码>等。
aa = Integer.parseInt(inputa.getText()));