activity_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:Android="http://schemas.Android.com/apk/res/Android">
<data>
<import type="Android.view.View" />
<variable
name="callback"
type="com.buscom.ActionCallBack" />
</data>
<LinearLayout xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/ll_oml"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="@color/grey_50"
Android:orientation="vertical">
<Android.support.design.widget.CoordinatorLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<Button
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:onClick="@{(v) -> callback.onClick(v)}"
Android:text="Menu" />
</Android.support.design.widget.CoordinatorLayout>
</LinearLayout>
</layout>
ActionCallBack.Java
これは、MainActivityで実装するインターフェイスです。
public interface ActionCallback {
void onClick(View view);
}
MainActivity.Java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
actionCallBack = new ActionCallBack() {
@Override
public void onClick(View view) {
System.out.println("Call onclick method *****");
}
}
}
ボタンをクリックするとonClick()メソッドが呼び出されない場合、出力に注記が表示されるか、アクションが実行されません。しかし、onClickListenerを使用して従来の方法で動作します
アクティビティ宣言に誤りがあると思います。とにかく、まだコールバックを設定していません。
binding.setCallback(this);
または
binding.setCallback(actionCallback);
チスコの答えは正しいですが、私はこの問題を解決しました
これを使用します。
binding.setHandlers(this);
私は断片で働いていました。それは誰かを助けるかもしれません。