0

George Mountが 1.0-rc4 から始めて言っ たように、データ バインディングを使用する場合、インクルードに変数は必要なくなりました。

ボタン.xml:

<layout xmlns:andr...>
   <Button
    android:id="@+id/button"
    ...." />

main.xml:

<layout xmlns:andr...
...
    <include layout="@layout/buttons"
            android:id="@+id/buttons"/>
....

しかし、私はそれを試してみましたが、エラーが発生しました:

エラー:(10, 31) 識別子には、XML ファイルからのユーザー定義型が必要です。toolbarViewModel にそれがありません

ツールバーが含まれています:

<layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">

    <data class="LoginPhoneFragmentBinding">

        <variable
            name="toolbarViewModel"
            type="ru.mobileup.myalarm2.binding.ToolbarViewModel"/>
    </data>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <include
             layout="@layout/toolbar"
             android:id="@+id/toolbarBinding"/>

ツールバーのレイアウトは次のとおりです。

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/primary"
    android:theme="@style/ToolbarThemeOverlay"
    app:navigationIcon="@{toolbarViewModel.navigationIconResId}"
    app:navigationOnClickListener="@{toolbarViewModel.navigationOnClickListener}"
    app:title="@{toolbarViewModel.title}"
    app:menu="@{toolbarViewModel.menuResId}"
    app:menuListener="@{toolbarViewModel.onMenuItemClickListener}"/>

なにが問題ですか?

注: 渡された変数を使用すると、すべて正常に動作することがわかっています。ジョージが言った使い方を理解しようとしています。

4

1 に答える 1

0

リンクされた投稿でのジョージの答えを誤解していると思います。@{toolbarViewModel.title}含まれているツールバー レイアウトで行うように変数を参照する場合は、変数が必要です。

build.gradle で dataBinding を有効にし、レイアウトを追加の<layout>タグでラップすると、レイアウトにViewDataBindingID を持つビューへの解決済みの参照 (例: など) を含むクラスが自動的に生成されますbinding.toolbar。これにより、データが自動的にバインドされることはありませんが、呼び出しを取り除くことができfindViewByIdます。

詳細については、こちらのブログ記事を参照してください。

于 2016-07-13T14:54:46.767 に答える