0

スクロールビュー内で動的ビューを次々と生成する必要があるという問題に直面しています。ボタンのクリック後にビューを生成する必要があります。

最初のボタン クリックでは正常に動作しますが、2 回目のクリック後は「java.lang.IllegalStateException: ScrollView は直接の子を 1 つだけホストできます」というエラーで失敗します。

誰でもこれを修正するのを手伝ってもらえますか。

scrollview が activity_main.xml である私の主なアクティビティ レイアウト:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
        tools:context=".MainActivity" android:layout_width="match_parent" android:layout_height="match_parent"
        android:id="@+id/parentRL">
    <Spinner android:id="@+id/spinState" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
    <Spinner android:id="@+id/spinCity" android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_below="@id/spinState"/>
    <TextView android:id="@+id/cityCount" android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_toRightOf="@id/spinCity" android:layout_below="@id/spinState" android:layout_marginLeft="5dp" 
        android:textIsSelectable="false"/>
    <Button android:id="@+id/showAddress" android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_toRightOf="@id/spinState" android:onClick="populateAddress" android:text="Search"/>
    <ScrollView android:id="@+id/scView" android:layout_width="match_parent" android:layout_height="wrap_content"
        android:layout_below="@id/spinCity">
    </ScrollView>
</RelativeLayout>

scrollview にアタッチする必要があるビュー レイアウトは、address_layout.xml です。

<?xml version="1.0" encoding="utf-8"?>
<TextView android:id="@+id/center" android:layout_width="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_height="wrap_content" android:text="@string/hello_world" android:layout_margin="10dp"
        android:textColor="#FF0000" android:textSize="30dp"
/>

メイン アクティビティのボタン クリック リスナー内:

LayoutInflater inflater = (LayoutInflater)MainActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View myView = inflater.inflate(R.layout.address_layout, null);
TextView _c_ = (TextView)(myView.findViewById(R.id.center));
_c_.setVisibility(View.VISIBLE);
_c_.setText(my_random_number);
View insertPoint = findViewById(R.id.scView);
((ViewGroup) insertPoint).addView(myView, 0, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
4

1 に答える 1