在android中我有一系列按钮,我这样声明 按钮网格[] [] =新按钮[3] [3];
然后我设置grid [0] [0] =(Button)findViewById(R.id.Middle_Middle)确实存在
当我尝试通过
更改文本时调用grid [0] [0] .setText(“U”);
我崩溃了。我知道它不是数组的声明或设置,因为当我进入我用来设置文本的函数时它只会崩溃。关于为什么会崩溃的任何想法
答案 0 :(得分:0)
如果Button.setText()抛出NullPointerException,则您的布局(R.id.Middle_Middle)中的按钮当前不得在您的内容视图中膨胀/存在。
由于按钮网格[] [] =新按钮[3] [3];实际上并没有创建您尝试访问的按钮,当您尝试设置文本时它将抛出NPE(因为您的findViewById()方法在尝试设置单个时返回null)。
在访问按钮之前,您需要实际实例化按钮。
例如
Button grid[][] = new Button[3][3];
for(int i = 0; i < grid.length; i++){
for(int j = 0; j < grid[i].length; j++) {
grid[i][j] = new Button(context);
parent.addView(grid[i][j]);
}
}
除非你为每个人使用findViewById()手动设置按钮,但这似乎是为了保持多维数组中按钮的引用而做的额外工作。
答案 1 :(得分:0)
你确定findViewByID(R.id.Middle_Middle)不返回null元素吗?
确保首先执行布局的setContentView并获取元素。