1

私は次のものを持っています: - detailsArray と呼ばれる ["Color: blue","Size: big"] のような文字列を持つマップ

LinearLayout と既存の TextViews を持つ既存の ScrollView:

<ScrollView>
    <LinearLayout>
        <TextView
            android:text="something: else"
        />
    </LinearLayout>
</ScrollView>

幅、高さ、xml スキーマなどの一般的なフィールドは意図的に省略しました。

プログラムで textViews を追加したいと思います。私は彼らが何人なのかわかりません:

    TextView detail;
    LinearLayout llay = (LinearLayout)fragmentView.findViewById(R.id.container);    
    for (int i = 0; i < detailsArray.length; i++) {
                    detail = new TextView(fragmentView.getContext());
                    detail.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
                    detail.setText(detailsArray[i]);
                    llay.addView(detail);
                }
        ScrollView sv = (ScrollView) fragmentView.findViewById(R.id.scroll_view);
        sv.addView(llay);

しかし、私は例外を得ています:

04-17 12:38:09.975: E/AndroidRuntime(3361): Caused by: java.lang.IllegalStateException: ScrollView can host only one direct child

私は何をすべきか?前もって感謝します。

4

1 に答える 1

1

sv.addView(llay);基本的に同じScrollViewに線形レイアウトを2回追加しているため、削除する必要があります。例外が発生し、最初にremoveAllViewsを使用すると問題が解決する理由です。for ループ呼び出しを終了した後

sv.invalidate(); 
sv.requestLayout(); 

コンテンツを更新する必要があります。

于 2013-04-17T15:49:56.043 に答える