1
上使用參數類型{type}找到屬性爲'{attribute}'的設置程序在綁定適配器上存在問題。下面的代碼:無法在{View}
@BindingAdapter(value = {"menu", "menuItemClick"}, requireAll = false)
public static void setMenu(View view, int menu, PopupMenu.OnMenuItemClickListener listener) {
if (menu == 0 || menu == -1) {
return;
}
view.setOnClickListener(v -> {
PopupMenu popup = new PopupMenu(v.getContext(), view);
//Inflating the Popup using xml file
popup.getMenuInflater().inflate(menu, popup.getMenu());
popup.setOnMenuItemClickListener(listener);
popup.show();
});
}
景觀佈局層次:
<FrameLayout
android:layout_width="@dimen/fields_edit_hint_length"
android:layout_height="52dp"
android:layout_gravity="end"
app:menu="@{item.getTypesMenuRes()}"
app:menuItemClick="@{item}"
app:visible="@{item.value.length!= 0 && !item.isFieldLocked()}"/>
方法getTypesMenuRes返回INT,如結合銜接
public int getTypesMenuRes() {
switch (type()) {
case PhoneNumber:
return R.menu.edit_fields_phone_types;
case Email:
return R.menu.edit_fields_email_types;
default:
return -1;
}
}
,但我得到的編譯時間erroe:
Error:(67, 29) Cannot find the setter for attribute 'app:menu' with parameter type int on android.widget.FrameLayout.
我正在使用在BindingAdapter中查看而不是FrameLayout,但是它是允許的,因爲它是FrameLayout的預處理器(並且我之前做過很多次),並且我絕對不會忽略這個erroe的原因。你能幫我一些建議嗎?
更新:
我交換線路
app:menu="@{item.getTypesMenuRes()}"
app:menuItemClick="@{item}"
,並獲得與應用程序相同的錯誤:menuItemClick。試圖刪除requiredAll = false
,但沒有幫助太