

portrait時は固定レイアウト, landscape時はスクロール可能なナビゲーションメニューを実装したいのですが愚直にlayout, layout-
landで分けても下記エラーが出てしまいます。

[code]

    Wrong state class, expecting View State but received class android.widget.ScrollView$SavedState instead.
    This usually happens when two views of different type have the same id in the same hierarchy.
    This view's id is id/drawer_nav. Make sure other views do not use the same id.
    
[/code]

このような場合の解決策がありましたらご教示ください。

layoutファイルは下記になります。

**layout/drawer_nav.xml**

[code]

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout android:id="@+id/nav_container">
         <RelativeLayout />
         <LinearLayout />
    </LinearLayout>
    
[/code]

**layout-land/drawer_nav.xml**

[code]

    <?xml version="1.0" encoding="utf-8"?>
    <ScrollView>
        <LinearLayout android:id="@+id/nav_container">
            <RelativeLayout />
            <LinearLayout />
        </LinearLayout>
    </ScrollView>
    
[/code]

両方共スクロール可能なレイアウトにするのが一番早いですが、portrait時のみ一部コンテンツをフッター固定したいため分けております。  
よろしくお願いします。

【以下追記】  
該当する部分のidを追記しました。  
また呼び出し元のactivity layoutは以下です。  
**activity_top.xml（呼び出し元）**

[code]

    <include
        android:id="@+id/drawer"
        layout="@layout/drawer_nav"
        android:layout_width="300dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"/>
    
[/code]


CC BY-SA 3.0
2015-02-18T03:59:17.243
6675
2015-02-18T11:06:46.533
2015-02-18T11:06:46.533
3827
3827
question
android
portait/landscapeで異なるレイアウト構造で表示したい


自己解決いたしましたので今後のためにコメントとして残しておきます。  
（実際には社内のandroid大先生から教えてもらった）

**layout-land/drawer_nav.xml**

[code]

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout>
      <ScrollView>
        <LinearLayout android:id="@+id/nav_container">
          <RelativeLayout />
          <LinearLayout />
        </LinearLayout>
      </ScrollView>
    </LinearLayout>
    
[/code]

検証したところ呼び出し元の`@+id/drawer`と異なるviewがincludeされていると起きるようです。  
わかってしまうと単純でしたが、少しハマってしまいました・・・


CC BY-SA 3.0
2015-02-18T11:06:19.320
6699
2015-02-18T11:06:19.320
3827
6675
answer