【问题标题】:ObservableInt causes crash on DataBinding LibraryObservableInt 导致 DataBinding 库崩溃
【发布时间】:2015-06-08 13:11:50
【问题描述】:

我正在使用新的数据绑定库并尝试实现可观察接口。但无论我是否将年龄变量设置为 textview,它都会崩溃。如果我将年龄变量转换为字符串,代码工作正常。有没有办法让它与 int 一起工作?

public class User extends BaseObservable {

@Bindable
public final ObservableField<String> name =
        new ObservableField<>();
@Bindable
public final ObservableInt age = new ObservableInt();}

崩溃日志:

android.content.res.Resources$NotFoundException: String resource ID #0x3
        at android.content.res.Resources.getText(Resources.java:274)
        at android.widget.TextView.setText(TextView.java:4122)
        at com.hipo.databinding.databinding.ActivityMainBinding.executeBindings(ActivityMainBinding.java:184)
        at android.databinding.ViewDataBinding.executePendingBindings(ViewDataBinding.java:321)
        at android.databinding.ViewDataBinding$6.run(ViewDataBinding.java:160)
        at android.databinding.ViewDataBinding$5.onViewAttachedToWindow(ViewDataBinding.java:130)
        at android.view.View.dispatchAttachedToWindow(View.java:13417)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2707)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2714)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2714)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2714)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1292)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
        at android.view.Choreographer.doCallbacks(Choreographer.java:580)
        at android.view.Choreographer.doFrame(Choreographer.java:550)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5221)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)public class User extends BaseObservable {

@Bindable
public final ObservableField<String> name =
        new ObservableField<>();
@Bindable
public final ObservableInt age = new ObservableInt();

}

【问题讨论】:

    标签: android data-binding


    【解决方案1】:

    把这个放在数据标签里

    您需要在 TextView 中使用 @{String.valueOf(user.age)}。

    或@{""+user.age}

    【讨论】:

    • 谢谢。我会接受你的答案,但 @{Integer.valueOf(user.age)} 返回 ınteger 所以它再次崩溃..我会编辑你的答案 android:text="@{String.valueOf(user.age)}"跨度>
    • 我可以确认String.valueOf() 有效。我花了太长时间试图让绑定正常工作。
    猜你喜欢
    • 1970-01-01
    • 2018-01-23
    • 2020-12-02
    • 2013-11-11
    • 2011-01-24
    • 2015-02-23
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多