2017-07-17 2 views
1

nicht gefunden. Haben Sie ein Problem mit Bindungsadapter. Hier ist der Code:Der Setter für Attribut '{Attribut}' mit Parametertyp {Typ} in {Ansicht}

@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(); 
    }); 
} 

Blick in das Layout-Hierarchie:

<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 &amp;&amp; !item.isFieldLocked()}"/> 

Methode getTypesMenuRes gibt int, wie in Adapter Bindung

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; 
    } 
} 

aber ich bekomme Zeit erroe kompilieren:

Error:(67, 29) Cannot find the setter for attribute 'app:menu' with parameter type int on android.widget.FrameLayout. 

Ich benutze View anstelle von FrameLayout innerhalb von BindingAdapter, aber es ist erlaubt, weil es von FrameLayout (und ich tat es viele Male vorher), und ich absolut nicht Grund und Grund dieser erroe. Kannst du mir etwas empfehlen?

Update:

Ich Wählverbindungen

  app:menu="@{item.getTypesMenuRes()}" 
      app:menuItemClick="@{item}" 

und bekommen den gleichen Fehler mit App: menuItemClick. Versucht, requiredAll = false zu entfernen, hat aber auch nicht geholfen

Antwort

1

herausgefunden. Ich verwendete BindingAdapter android.support.v7.widget.PopupMenu; , aber Klasse Field implementierte android.widget.PopupMenu.OnMenuItemClickListener; als Ergebnis BindingAdapter war falsch und für verschiedene Bestellungen von Feldern in Ansicht im Layout. Und dieser Fehler war natürlich

Verwandte Themen