1

同じレイアウトを複数追加するにはどうすればよいですか

View v = (LinearLayout) inflater.inflate(R.layout.tab_frag2_layout,container, false);
     RelativeLayout tv = (RelativeLayout) inflater.inflate(R.layout.post_layout,container,false);
     RelativeLayout tv2 = (RelativeLayout) inflater.inflate(R.layout.post_layout,container,false);

    ((LinearLayout) v).addView(tv);
    ((LinearLayout) v).addView(tv);
    ((LinearLayout) v).addView(tv);
    ((LinearLayout) v).addView(tv);
    ((LinearLayout) v).addView(tv);

これを行うとエラーが発生し、これを行うと1回だけ表示されます

View v = (LinearLayout) inflater.inflate(R.layout.tab_frag2_layout,container, false);
     RelativeLayout tv = (RelativeLayout) inflater.inflate(R.layout.post_layout,container,false);
     RelativeLayout tv2 = (RelativeLayout) inflater.inflate(R.layout.post_layout,container,false);

    ((LinearLayout) v).addView(tv);
    ((LinearLayout) v).addView(tv2);

どうすればいいですか 助けてください

4

1 に答える 1

2

まず第一に、キャストには意味がありません:

View v = (LinearLayout) inflater.inflate(R.layout.tab_frag2_layout, container, false);

キャストを削除するか、タイプをvに変更しLinearLayoutます。

log cat にエラー メッセージを提供する方がよいでしょうが、ClassCastExceptionここまで来ていると思います。

((LinearLayout) v).addView(tv);

多分あなたvはそうではありませんLinearLayoutか?よくわからない場合は、代わりに次の方法を試してください。

((ViewGroup) v).addView(tv);

編集

レイアウトをインフレートすると、のインスタンスViewが作成されます。複数のView親を持つことはできないため、これを行うときは次のようにします。

.addView(tv);
.addView(tv);

OS は、別の親を追加しようとしていると判断しますtv(禁止されているため、例外がスローされます)。

于 2012-08-29T11:52:09.667 に答える