2017-01-22 6 views
0

ループを使ってビューをarrayListに配置しようとすると、問題が発生します。Androidスタジオ:ヌルを返す繰り返しの表示

これは動作します:

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 

戻り値はnullポインタ例外:java.lang.NullPointerExceptionが:によって引き起こさ

仮想 メソッドを呼び出すための試みを'void android.widget.TextView.setText(java.lang.CharSequence)' on a nu

。FriendActivity.onCreate(FriendActivity.java:56)****** で参照 オブジェクトでしょう、私は間違って何かをやっていますか?

+1

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

おかげであるべき。問題が何であるかが分かります。 –

+0

私はそれが何かばかげたことを知っていた...私はそれを逃したと信じられない。マイクありがとう。 i + 1を連結するだけではありません。 – Lpuche

答えて

0

それは確認するのは難しいのですが、私はあなたの問題は、おそらくということだと思う:

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

だけで次のようになります。

friendNames.add(currentTV); 

currentTVがすでに前の行で見つかったのTextViewであるため、 。

+0

ああ、申し訳ありませんが、それを修正しました。それはコードの私のタイプミスでした。それはあなたがそれを置く方法です。ありがとう – Lpuche

0

ルーキー間違い、

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

は本当にあなたは、ループ内の `textViewID`の値をチェックする必要がありますマイクM

関連する問題