只有一个编辑而不是两个(AlertDialog)

时间:2014-02-24 18:33:31

标签: java android alert edit alertdialog

新的一天 - 新问题:

我希望有一个按钮,启动AlertDialog,用户可以在其中更改随机数的范围

我的问题是:它只显示一个编辑,我不知道为什么

(顺便说一下:应用程序没有崩溃:我得到一个随机数,我只是不知道它来自哪里)

下面是我的代码:

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



}   

希望你能帮助我..我是开发新手,这是我的第一个真正的项目

2 个答案:

答案 0 :(得分:1)

第二个视图覆盖了AlertDialog中的第一个,你只放了一个视图!所以使用线性布局技巧,如下所示:

String 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");
     LinearLayout linearLayout = new LinearLayout(context);
     linearLayout.setOrientation(1);
     linearLayout.setGravity(Gravity.CENTER);


    final EditText inputa = new EditText(this);
    final EditText inputb = new EditText(this);
     linearLayout.addView(inputa );
     linearLayout.addView(inputb );

    alert.setView(linearLayout );


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

}

答案 1 :(得分:1)

通过“一个编辑”,我假设你的意思是“一个编辑文本”。您只获得一个edittext的原因是您使用setView()方法两次使用两个不同的edittext组件。 setView()方法实际上用于设置对话框的视图,因此您的问题的解决方案是您可以使用布局文件,其中两个edittext包含在linearlayout中。这是你如何做到这一点 -

在布局文件夹中定义一个布局文件,如下所示,并为您选择的布局文件命名

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/set_default_header"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:background="@drawable/lem_background_small"
     android:orientation="vertical"
     android:padding="10dp" >
     <EditText
        android:id="@+id/randomno1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="8dp"
        android:layout_gravity="bottom"
        android:inputType="text"
        android:text=""
        android:hint="Enter Budget"
        android:textAppearance="?android:attr/textAppearanceSmall" />
     <EditText
        android:id="@+id/randomno2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="10dp"
        android:layout_gravity="bottom"
        android:inputType="text"
        android:text=""
        android:hint="Enter Budget"
        android:textAppearance="?android:attr/textAppearanceSmall" />
      </LinearLayout> 

在setView()方法中写入setView(R.layout.yourlayoutfilename)而不是

    alert.setView(inputa);
    alert.setView(inputb);

然后在对话框的setPositiveButton()方法中,您可以通过其ID访问这些edittexts并执行您想要的操作。

我希望这能解决你的问题。