2017-03-01 77 views
0

我有android數據綁定的問題。我有不同配置的佈局,如ie:activity_main.xml/land/activity_main.xml等。 當前,當我使用setContentView方法時,只需傳遞佈局名稱,它會自動檢測哪些佈局應該選擇設置內容視圖。Android數據綁定與多個佈局

但是,如果我使用數據綁定那將是什麼解決方案。 據我所知,綁定的名稱將根據配置而有所不同。所以,如果我使用ActivityMainBinding,那將始終是相同佈局的數據綁定。我閱讀了關於指定標記(每個配置爲bools)的解決方案並使用if/else語句,然後膨脹所需的綁定,但這是非常糟糕的解決方案。

任何人都可以建議一個活動/片段進行不同的配置使用不同的佈局佈局/端口/ SW600端口/土地等

感謝的情況下更好的解決方案!

回答

2

你可以使用同樣的方式:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ActivityMainBinding binding = DataBindingUtil.setContentView(this, 
     R.layout.activity_main); 
    // set all variables in binding 
} 

所產生的將是所有匹配的佈局綁定一個基類,將所有變量/場集合體的ActivityMainBinding類。如果視圖僅在某些佈局中,則某些配置中的某些字段引用將爲空,因此您必須注意這一點。如果您主要使用數據綁定表達式來設置值或附加事件處理程序,則甚至不需要使用視圖字段引用,因此您不必擔心這一點。

如果視圖在不同的佈局中有不同的類型,公用基類將用於視圖字段。

您可以通過查看生成文件夾來查看生成的代碼。看看它是如何實現的,你可能會覺得很有趣。

+0

謝謝@George!真的很棒! – sromanov