Gram z Android databinding library i próbuję go użyć z dołączonymi układami.Jak uzyskać widoki z Androidem Databinding?
Kod mam to tak:
activity_main.xml
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id = "@+id/linearLayout">
<include
layout="@layout/view" />
</LinearLayout>
</layout>
view.xml
<View xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id = "@+id/myView">
</View>
MainActivity.java
public MainActivity extends AppCompatActivity{
private ActivityMainBinding mBinding;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
LinearLayout layout = mBinding.linearLayout; // this field is visible
View myView = mBinding.myView // THIS FIELD IS NOT VISIBLE
}
}
Jak pisałem w komentarzach v iew myView, który jest zadeklarowany w "włączonym" układzie, nie jest widoczny. Jeśli zamieniam na rzeczywisty kod w pliku view.xml, to mBinding.myView staje się widoczny, dlatego wydaje się, że jest to włączanie.
urzędowa dokumentacja tylko że
„Powiązanie danych nie obsługuje to jako bezpośrednie dziecka elementu seryjnej.” ale w moim przypadku Widok jest dzieckiem LinearLayout, nie jest to bezpośrednie dziecko ..
Jakieś wskazówki?
Jak mogę zrobić to samo, ale dla dwóch układów o tej samej nazwie, to do układu o pokrowiec na tablet. Mam na myśli, gdy mam dwa układy o nazwie 'layout/layout.xml' i' layout-sw600dp/layout.xml', ale drugi ma kontener 'FrameLayout' dla fragmentów, ten ostatni nie pojawia się w klasie generującej powiązania. Wcześniej dzięki. – epool
Jeśli masz widok w jednym układzie, ale nie w obu, powinieneś zobaczyć widok w klasie, ale będzie on pusty, gdy jeden układ jest powiązany. Upewnij się, że podajesz identyfikatory do widoków, które chcesz mieć jako właściwości. –