2016-04-26 5 views
3

私は、異なるレイアウトのデータバインディングに関する問題に直面しました。 私はさまざまな向きのレイアウトファイルを持っています。ポートレートモードの場合 : 代替レイアウトのデータバインド

<layout xmlns:android="http://schemas.android.com/apk/res/android"> 
<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <FrameLayout 
     android:id="@+id/container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</LinearLayout> 
</layout> 

とlandspaceモードの

<layout xmlns:android="http://schemas.android.com/apk/res/android"> 
<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <FrameLayout 
     android:id="@+id/container" 
     android:layout_width="match_parent" 
     android:layout_weight="1" 
     android:layout_height="match_parent" /> 

    <FrameLayout 
     android:id="@+id/extra_container" 
     android:layout_width="match_parent" 
     android:layout_weight="1" 
     android:layout_height="match_parent" /> 

</LinearLayout> 
</layout> 

を私は

ViewBinding binding = DataBindingUtil.setContentView(this, R.layout.view); 

を経由して結合するためにそれを使用するとき、私は現在のバインディングからextraContainerのためアクセスできません。

同じIDを持つビューを追加し、実行時にビュークラスをチェックする可能性のある解決策。その他のソリューション?

+0

レイアウト構造を教えていただけますか? –

+0

'res/layout/view.xml'と' res/layout-sw600dp-land/view.xml' – xUser

+0

私はこれについて何かエラーを見ることはできません。これがなぜ機能していないのか分かりません。 –

答えて

0

Gradleのバージョンを2.1.0にアップデートすることで問題は修正されましたが、Gradle Revisionには何の言及もなく、Gradleのバージョンとの関連がわかりません。

0

私は異なる構成のDataBindingの解決策はありません。しかし、私は "タブレット"のレイアウトをres/layout-sw600dp-land/view.xmlから削除し、それをデフォルトのビューにマージするような提案をしています。

オリエンテーションで確認し、extra_containerレイアウトをランドスケープモードで初期化します。それ以外は非表示にして初期化しないでください。