繁体   English   中英

AlertDialog有两个编辑 - 按下按钮确定 - >启动新警报

[英]AlertDialog with two Edits - when press Button ok --> start new Alert

这是一个非常愚蠢的问题,但几天前我开始用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();



}    

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

尝试在您的活动中实现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);

您不应该在其他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只允许数字!!

使用view.getContext()而不是this引用OnClickListener上下文来创建AlertDialog:

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

其次,如果你想在Alert按钮上更改s值,然后从s删除final并在btn_own方法之外声明它。

要从String转换int,请使用:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM