我试图制作一个程序,通过警报对话框询问用户输入一个号码(该部分已完成)但我希望生成与用户指定的按钮一样多的按钮。我试图创建一个for循环来创建按钮,但我无法让它正常工作:
Button[]buttons;
buttons = new Button[numOfButtons];
for(int i = 1;i!=numOfButtons;i++){
buttons[i-1] = new Button(this);
layout1.addView(buttons[i-1]);
}
我认为可以让它工作的唯一合乎逻辑的方法是使用数组,因为我不相信你可以继续在循环中声明新的变量,但这似乎不起作用。对不起,如果这有点傻,我还是新手。它给出了致命的异常错误。
完整代码:
public class MainActivity extends AppCompatActivity {
private Editable numButtons;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
RelativeLayout layout1 = new RelativeLayout(this);
setContentView(layout1);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Enter the number of buttons: ");
final EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_NUMBER);
builder.setView(input);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
numButtons = input.getText();
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
Button[]buttons;
int numOfButtons = Integer.parseInt(numButtons.toString());
buttons = new Button[numOfButtons];
for(int i = 1; i != numOfButtons; i++){
buttons[i-1] = new Button(this);
layout1.addView(buttons[i-1]);
}
}
}
答案 0 :(得分:0)
单击AlertDialog按钮异步,一旦代码点击此行...
int numOfButtons = Integer.parseInt(numButtons.toString());
您将获得NullPointerException
,因为此时numButtons
为空。
请尝试这样做。假设layout1.addView
正常工作。请注意,您需要将layout1
设为final或将其作为类字段移出以在此处引用变量。
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
numButtons = input.getText();
int numOfButtons = Integer.parseInt(numButtons.toString());
Button[] buttons = new Button[numOfButtons];
for(int i = 0; i < numOfButtons; i++){
buttons[i] = new Button(MainActivity.this);
layout1.addView(buttons[i]);
}
}
});