3

ViewBinding と DataBinding を同じアクティビティで使用したいと考えています。これが可能である場合、それをアクティビティにどのように実装しますか?

これが私がこれまでに試したことです。

@Override
protected void onCreate(Bundle savedInstanceState) {
    ActivityMainBinding viewBinding = ActivityMainBinding.inflate(getLayoutInflater();
    View view = viewBinding.getRoot();
    setContentView(view)

    ActivityMainBinding  dataBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);

}
4

2 に答える 2

5

ViewBinding が作成されたのは、(データ フィールドを使用して xml で値を直接設定するのではなく) java/kotlin コードでバインディング クラスを取得し、参照を使用するためだけに DataBinding を使用していた人がいたためです。データ バインディングには ViewBinding が持つすべてのものが含まれるため、View バインディングと並行して動作するようには設計されていません。

最大の問題は、生成されたクラス間の名前の競合です。ViewBinding と DataBonding の両方MainLayoutBindingで、レイアウトのクラスを生成する必要がありますmain_layout.xml

カスタム命名を使用する回避策があるかもしれませんが、それほど価値はありません。その理由は次のとおりです。

ほとんどの場合、両方が必要な唯一の理由は、すべての xml をラップしてデフォルトでバインディングを取得する必要がないようにすることですが、それ<layout>...</layout>は非常に小さな労力であるため、両方のライブラリを機能させる価値はありません。並んで。

xml にデータを設定する場合は、データ バインディングを使用するだけで、すべての xml をラップする標準的な方法にし<layout>て、バインディング クラスを介して常にビューを参照できるようにします。

xml にデータを設定したくない場合は、View Binding を使用してください。

しかし、本当にやりたい場合は、これを使用してデータバインディング名を設定できると思います:

<data class="DataBindingName">
    </data>
于 2021-04-01T19:59:43.203 に答える