0

LinearLayout内のRelativeLayout内のTextViewにアクセスするときにこの問題が発生します

row.xmlファイルにこれらのビューがあるとしましょう

<LinearLayout>
    <TextView android:id="@+id/title" />
    <RelativeLayout android:id="@+id/a_parent">
        <TextView android:id="@+id/a">
    </RelativeLayout>
    <RelativeLayout android:id="@+id/b_parent">
        <TextView android:id="@+id/b">
    </RelativeLayout>
</LinearLayout>

ここで、アクティビティからTextViewsの値を変更したいと思います

LayoutInflater li=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout temp=(LinearLayout) li.inflate(R.layout.row, null);
((TextView)temp.findViewById(R.id.title)).setText("This is title");
RelativeLayout rl=(RelativeLayout)temp.findViewById(R.id.a_parent);
((TextView)rl.findViewById(R.id.a)).setText("an this is the content of a");

id'title'のTextViewを正常に設定できますが、最後の行に近づくとエラーが表示されます。エラーの原因はandroid.content.res.Resources$NotFoundExceptionであると表示されます:文字列リソースID#0x1

誰かが私に何が間違っているのか、それを修正する方法、そしてなぜコードが期待どおりに機能しないのか教えてもらえますか?

ありがとう

4

3 に答える 3

3

例外は、文字列のResourcesNotFoundExceptionです。を使用してTextViewの値を設定していますgetStringか?もしそうなら、この文字列がstrings.xmlファイルに存在することを確認しますか?そうでない場合は、R.string.name代わりに自分のビューの1つを参照しましたR.id.nameか?投稿用にコードを変更したようです。完全なスタックトレースだけでなく、元のコードで行っていることを正確に投稿した方が簡単な場合があります。

Rファイルが新しいコードで最新でないために、リソースで問題が発生することがあります。また、プロジェクトの再構築/クリーニングを試して、それが役立つかどうかを確認します。

于 2012-09-21T17:03:47.760 に答える
1

通常、このエラーは、次のようにTextviewで整数値を設定しようとしたときに発生します。

   textview.setText(1);

この場合、Androidは整数値を文字列リソースIDと見なし、文字列strings.xmlをチェックして、Resources$NotFoundExceptionをスローします。コードを確認してください。そうでない場合は、必要なコードとlogcat出力を投稿してください。

于 2012-09-21T17:15:19.577 に答える
0
   LinearLayout temp=(LinearLayout) li.inflate(R.layout.row....

XMLファイルでは、LinearLayoutに「android:id」プロパティが宣言されていません。

于 2012-09-21T16:59:55.757 に答える