在一个Android应用中,我有4个按钮,分别为其分别赋予了标签1,2,3和4,并且我想使用for循环更改每个按钮中的文本(如果它匹配(或不匹配)a)我的代码中的某个值,for循环中的“ i”从1到4,我当然会将其转换为字符串..但是当我运行代码时,它给了我空对象引用,应用崩溃 当应用程序调用ans.setText()时发生错误;或任何其他方法。 **我确实尝试启动对象并通过循环外的标签找到它,并且没有问题
for(int i=1;i<=4;i++){
Button ans=(Button) view.findViewWithTag(String.valueOf(i));
if(i==correct()){
ans.setText(x+y+"");
}else{
int z=rand.nextInt(100)+rand.nextInt(100);
if(z==x+y){
ans.setText(z+rand.nextInt(100));
}
else{
ans.setText(z);
}
}
}
给出错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setText(java.lang.CharSequence)' on a null object reference
at com.example.braintrainer.MainActivity.go(MainActivity.java:52)
答案 0 :(得分:0)
绑定您的布局并使用childCount代替标签来解析视图。
假定它是线性布局(但您可以相应地对其进行调整):
LinearLayout layout = (LinearLayout) findViewById(R.id.name_of_your_layout);
for (int i = 0; i < layout.getChildCount(); i++) {
View v = layout.getChildAt(i);
//add your checks here and set the text using v.setText("...");
}
注意:在循环中,将i定义为整数,然后检查是否为i == correct()
。您的correct()方法是否返回一个应该等于i的整数?也许您在此处未共享的代码上遇到了更多问题。