19898


FirstActivityのListViewをタップすると、また別のListViewを持ったSecondViewに遷移させます。設定画面のように実装したいと考えています。

遷移後のSecondActivityにある次のコードでエラーが出ます:

[code]

    setContentView(listView2);
    
[/code]

エラーメッセージはこちらです:

[code]

     Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
    
[/code]

activity_first.xml

[code]

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:tools="http://schemas.android.com/tools"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:orientation="vertical"
       tools:context="com.example.hoge.hogehoge.Activity.FirstActivity">
          <ListView
            android:id="@+id/list_view1"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>
    
[/code]

FirstActivity.java

[code]

    public class FirstActivity extends AppCompatActivity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
    
        final ListView listView1 = new ListView(this);
        setContentView(listView1);
    
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
        adapter.add("A"));
        adapter.add("B");
        adapter.add("C");
    
        listView1.setAdapter(adapter);
        listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
                    startActivity(intent);
                    break;
                }
            }
        });
      }
    }
    
[/code]

activity_second.xml

[code]

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:tools="http://schemas.android.com/tools"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:orientation="vertical"
       tools:context="com.example.hoge.hogehoge.Activity.SecondActivity">
          <TextView
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:text="@string/text"/>
         <ListView
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:id="@+id/listView2" />
         <Button
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:id="@+id/button"
             android:onClick="onClick"/>
    </LinearLayout>
    
[/code]

SecondActivity.java

[code]

    public class SecondActivity extends AppCompatActivity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
    
        ListView listView2 = (ListView)findViewById(R.id.list_view2);
        setContentView(listView2);
    
        ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1);
        adapter.add("D");
        adapter.add("E");
        adapter.add("F");
    
        listVIew2.setAdapter(adapter);       
    } 
    
[/code]


CC BY-SA 3.0
2015-12-11T16:13:07.347
19895
2021-03-07T05:15:43.613
2021-03-07T05:15:43.613
3060
10958
question
java android
ListViewの要素をタップした際に、ListViewを持つActivityに遷移したい


findViewById で listView2 を layout の中から拾い出しているので、さらに重ねて set する必要はないはずです。

つまり、

[code]

    setContentView(listView2);
    
[/code]

この処理は不要なはずです。エラーについてはこれで解消されるはずです。

> TextView以外表示されません

`layout_height`を`match_parent`にしているためではないかと思います。3 つとも、`wrap_content`にしてみてください。


CC BY-SA 3.0
2015-12-11T16:57:05.310
19898
2015-12-12T05:17:57.290
2015-12-12T05:17:57.290
7290
7290
19895
answer