双向绑定无法解析java.lang.String属性的setter
我正在玩Android Studio 2.1 AFIK中引入的数据绑定API的双向绑定。双向绑定无法解析java.lang.String属性的setter
我得到这个有趣的错误:
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> java.lang.RuntimeException: Found data binding errors.
****/ data binding error ****msg:The expression address.street cannot cannot be inverted: Two-way binding cannot resolve a setter for java.lang.String property 'street'
file:/path/to/layout.xml
loc:34:37 - 34:50 ****\ data binding error ****
当我尝试谷歌的错误我只是找到谁在哭它一个人4天的日本Twitter的帖子...
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/edit_hint_zip"
android:text="@={address.zip}"
tools:text="12345"/>
address.zip
是String
。我猜测这里的问题是CharSequence
与String
作为EditText.getText()
的返回值。
我的想法是将其定义然而,这并没有为我工作:
@NonNull
@InverseBindingAdapter(attribute = "text")
public static String getText(EditText edit) {
return edit.getText().toString();
}
我错过了什么?
这个错误是丑陋的,正确的数据绑定API中的错误。解决方案是生成一个setter 和一个getter。我想出了创建一个二传手的想法,但不想创造一个吸气器。
现在这里是我的简化模型:
public class Address {
public String street;
public void setStreet(String street) {
this.street = street;
}
public String getStreet() {
return street;
}
}
正如你可能注意到的getter和setter是无用的,但对于双向结合所需。
如果你认为这是API的一个bug,请明星我的错误报告:Two-way binding required setters AND ALSO getters
据官方数据绑定回购https://android.googlesource.com/platform/frameworks/data-binding/提交信息,这个错误已被固定在Android Studio中2.2预览3.
你能链接你正在谈论的提交吗?我在那里看到只有一个在8周前推出的提交,这似乎没有关系。 – rekire
你的意思是提交[0137f2](https://android.googlesource.com/platform/frameworks/data-binding/+/0137f239576702ac3ef4dd887b445d71f35169dd)? – rekire
是的,我也在不同版本的Android Studio上测试过。 –