如何在for循环中添加一个按钮?

时间:2016-02-08 22:43:28

标签: java android

我试图制作一个程序,通过警报对话框询问用户输入一个号码(该部分已完成)但我希望生成与用户指定的按钮一样多的按钮。我试图创建一个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]);

    }
}
}

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]);
        }
    }
});