2016-04-30 25 views
3

私はAndroid Studio 2.1 AFIKで導入されたデータバインディングAPIの双方向バインディングを使用しています。双方向バインディングでjava.lang.Stringプロパティのセッターを解決できません

私はこの興味深いエラーが出る:私はちょうどそれについて泣いている男から4日齢の日本のTwitterの投稿を見つけ、そのエラーをGoogleにしようとすると

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 ****

を...

<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.zipStringです。私はここでの問題はCharSequenceStringの戻り値としてEditText.getText()と推測しています。

私の考えでは、それはしかし、これは私のために動作しません定義することにした。

@NonNull 
@InverseBindingAdapter(attribute = "text") 
public static String getText(EditText edit) { 
    return edit.getText().toString(); 
} 

私は何を逃したのですか?

答えて

4

このバグは地獄であり、正しくデータバインディングAPIのバグです。解決策は、セッターおよびゲッターを生成することです。私はセッターを作るというアイデアが早く出てきましたが、ゲッターを作りませんでした。ここで

は今、私の単純化したモデルである:あなたがゲッターとセッターを注意しているよう

public class Address { 
    public String street; 

    public void setStreet(String street) { 
     this.street = street; 
    } 

    public String getStreet() { 
     return street; 
    } 
} 

無用ですが、2つの結合方法のために必要。

あなたは私のバグレポートを主演してください、これはAPIのバグと思われる場合:Two-way binding required setters AND ALSO getters

0

公式レポをデータバインディングによるhttps://android.googlesource.com/platform/frameworks/data-binding/メッセージをコミットし、このバグは、Android Studioの2.2プレビュー3.

+0

に固定されていますあなたが話しているコミットをリンクできますか?私は8週間前にプッシュされたコミットが1つしかないことを確認していますが、これは関連していないようです。 – rekire

+0

コミット[0137f2](https://android.googlesource.com/platform/frameworks/data-binding/+/0137f239576702ac3ef4dd887b445d71f35169dd)を意味しますか? – rekire

+0

はい、Android Studioのさまざまなバージョンでもテストしました。 –

関連する問題