Java 带有两次编辑的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

这是一个非常愚蠢的问题,但我几天前刚用java为android启动了这个程序,我不知道该怎么办

所以当你按下按钮时,我想要一个AlertDialog。此AlertDialog需要2次编辑。当你按下OK时,它必须计算一些东西,并在新的AlertDialog中显示解决方案

这就是我得到的:

  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()));