Android Studio:查看迭代返回null

时间:2017-01-22 03:07:07

标签: java android

我在尝试使用循环将视图放入arrayList时遇到了问题。

这有效:

String textV = "chkBox1Text";
int textI = getResources().getIdentifier(textV, "id", getPackageName());
TextView test = (TextView)findViewById(textI);
test.setText("Test 01");

但是这个

ArrayList<TextView> friendNames = new ArrayList<TextView>();
for(int i = 0; i < 10; i++){
        String textViewID = "chkBox" + i+1 + "Text";
        int current = getResources().getIdentifier(textViewID, "id", getPackageName());
        TextView currentTV = (TextView)findViewById(current);
        friendNames.add(currentTV);
    }
friendNames.get(0).setText("Test 01");  // 0 or 1 

返回空指针异常:

  

引起:java.lang.NullPointerException:尝试调用虚拟   方法'void android.widget.TextView.setText(java.lang.CharSequence)'   在null对象引用上                                                                                  在   ******。FriendActivity.onCreate(FriendActivity.java:56)

我做错了什么吗?

2 个答案:

答案 0 :(得分:0)

很难确认,但我认为你的问题可能是:

friendNames.add((TextView)findViewById(currentTV));

应该是:

friendNames.add(currentTV);

因为currentTV已经是您在上一行中找到的TextView。

答案 1 :(得分:0)

Rookie Mistake,

 String textViewID = "chkBox" + i+1 + "Text";

应该是

 String textViewID = "chkBox" + (i+1) + "Text";

感谢Mike M