J'essaie de lier de deux façons la valeur booléenne de mon modèle à RadioButton. Toutefois, le code ne compile pas. Je messages d'erreur suivants:Liaison de données bidirectionnelle Android avec bouton radio
Error:(41, 21) error: variable receiveDataContainer is already defined in method onChange()
Error:(45, 59) error: incompatible types: boolean cannot be converted to ReceiveDataContainer
Error:(46, 17) error: incompatible types: ReceiveDataContainer cannot be converted to boolean
Ma Classe:
public class ReceiveDataContainer extends BaseObservable {
private boolean isShopReceiveMethodChosen;
@Bindable
public boolean isShopReceiveMethodChosen() {
return isShopReceiveMethodChosen;
}
public void setShopReceiveMethodChosen(boolean isShopReceiveMethodChosen) {
this.isShopReceiveMethodChosen = isShopReceiveMethodChosen;
notifyPropertyChanged(BR.shopReceiveMethodChosen);
}
}
XML:
<RadioGroup
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:orientation="vertical"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/inputLayoutPhoneNumber">
<RadioButton
android:id="@+id/radio_receive_in_store"
android:text="@string/radio_button_receive_in_store"
android:checked="@={receiveDataContainer.shopReceiveMethodChosen}"
style="@style/CartReceptionRadioButton" />
<RadioButton
android:id="@+id/radio_send_to_home"
android:text="@string/radio_button_send_to_home"
style="@style/CartReceptionRadioButton" />
</RadioGroup>
Et il est le code généré marqué comme non valide:
// Inverse Binding Event Handlers
private android.databinding.InverseBindingListener radioReceiveInStorea = new android.databinding.InverseBindingListener() {
@Override
public void onChange() {
// Inverse of receiveDataContainer.shopReceiveMethodChosen
// is receiveDataContainer.setShopReceiveMethodChosen((boolean) callbackArg_0)
boolean callbackArg_0 = radioReceiveInStore.isChecked();
// localize variables for thread safety
// receiveDataContainer.shopReceiveMethodChosen
boolean shopReceiveMethodCho = false;
// receiveDataContainer
com.abastra.home_cook.catalogue.data.models.ReceiveDataContainer receiveDataContainer = mReceiveDataContaine;
// receiveDataContainer != null
boolean receiveDataContainer = false;
receiveDataContainer = (receiveDataContainer) != (null);
if (receiveDataContainer) {
receiveDataContainer.setShopReceiveMethodChosen((boolean) (callbackArg_0));
}
}
};
Qu'est-ce que ça vaut mentionner est que lorsque je retire "=" signe, le code compile.
S'il vous plaît aidez-moi ...
Cela dépend de la longueur du nom de la variable dans votre mise en page. J'ai eu de longs noms et j'ai rencontré ce bug. Raccourcir les noms fonctionne. Il semble aussi qu'il a été corrigé dans AS 2.3 –