新的一天 - 新问题:
我希望有一个按钮,启动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();
}
希望你能帮助我..我是开发新手,这是我的第一个真正的项目
答案 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并执行您想要的操作。
我希望这能解决你的问题。