AlertDialog有两个编辑 - 按下按钮确定 - >开始新的警报

时间:2014-02-22 12:43:06

标签: java android this alertdialog builder

这是一个非常愚蠢的问题,但几天前我开始用java for 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'。  Cannot assign a value to final variable '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();



}    

错误: 好吧现在它的工作原理如下:我可以输入一个数字,然后我得到另一个随机数。 但我怎么能让它像以下一样工作:我进入一个范围,我得到一个随机数? 为什么只查看一个编辑?

4 个答案:

答案 0 :(得分:3)

尝试在您的活动中实现DialogInterface.OnClickListener(它更好,因为您不创建新对象,因此使用更少的资源并节省电池)

public class MyActivity extends Activity implements {
    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();
    }
}

然后用这个设置你的按钮:

alert.setPositiveButton("Ok", this);

答案 1 :(得分:2)

您不应将AlertDialogs嵌套在其他AlertDialogs中。

所以这个:

 new AlertDialog.Builder(this)  
                        .setMessage(s)
                        .show();

将使用错误的上下文,但您必须将活动作为上下文传递

尝试使用YourActivity.thisview.getContext()作为参数


更新关于您应该尝试的NumberFormatException

 try {
      aa = Integer.parseInt(inputa.getText().toString());
 } catch (NumberFormatException e) {
      System.out.println("not a number: " + inputa.getText().toString());
      e.printStackTrace();
 }

但是你需要确保你的editText只允许数字!!

答案 2 :(得分:2)

使用引用OnClickListener上下文的view.getContext()代替this来创建AlertDialog:

AlertDialog.Builder alert = new AlertDialog.Builder(view.getContext());

如果您想在“提醒”按钮上更改“{1}}上的值”,请点击第s段中的final,然后在s方法之外声明。

答案 3 :(得分:0)

要从String转换int,请使用:

aa = Integer.parseInt(inputa.getText()));

使用try / catch环绕它以避免用户输入错误和异常