Tôi có một lớp CustomView với bố cục dữ liệu có một biến. Trong bố cục có chứa CustomView, tôi muốn chuyển một thuộc tính vào CustomView và có CustomView chuyển thuộc tính đó vào liên kết của bố cục riêng của nó. Dưới đây là những gì tôi có:Nhận ràng buộc từ lớp xem
public class CustomView extends LinearLayout
{
public CustomView(Context inContext, AttributeSet inAttrs)
{
super(inContext, inAttrs);
inflate(inContext, R.layout.custom_view, null);
}
@BindingAdapter({"app:variable"})
public static void SetVariable(CustomView inCustomView, VariableType inMyVariable)
{
CustomViewBinding binding = DataBindingUtil.getBinding(inCustomView);
binding.setMyVariable(inMyVariable);
}
}
Sự cố này cố gắng trích xuất ràng buộc từ chế độ xem. Điều này thậm chí có thể? Dưới đây là stack trace:
java.lang.NullPointerException: Attempt to invoke virtual method 'void xxx.databinding.CustomViewBinding.setVariableType(xxx.VariableType)' on a null object reference
at xxx.CustomView.SetDynamicList(CustomView.java:32)
at xxx.MyFragmentBinding.executeBindings(MyFragmentBinding.java:116)
at android.databinding.ViewDataBinding.executePendingBindings(ViewDataBinding.java:350)
at android.databinding.ViewDataBinding$6.run(ViewDataBinding.java:167)
at android.databinding.ViewDataBinding$7.doFrame(ViewDataBinding.java:233)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:856)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:603)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Và nếu tôi thay đổi
DataBindingUtil.getBinding(inCustomView)
để
DataBindingUtil.bind(inCustomView)
sau đó tôi có được điều này:
java.lang.IllegalArgumentException: View is not a binding layout
at android.databinding.DataBindingUtil.bind(DataBindingUtil.java:166)
at android.databinding.DataBindingUtil.bind(DataBindingUtil.java:140)
at xxx.CustomView.SetDynamicList(CustomView.java:30)
- at xxx.databinding.MyFragmentBinding.executeBindings(MyFragmentBinding.java:116)
at android.databinding.ViewDataBinding.executePendingBindings(ViewDataBinding.java:350)
at android.databinding.ViewDataBinding$6.run(ViewDataBinding.java:167)
at android.databinding.ViewDataBinding$7.doFrame(ViewDataBinding.java:233)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:856)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:603)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
này có thể ngụ ý rằng cách bố trí tệp không được định dạng cho databinding, b ut nó là. Nó có phần tử layout và phần tử dữ liệu với các biến và mọi thứ.
Bạn có thể đăng theo dõi ngăn xếp của mình không? – Submersed
Được cung cấp, cùng với một chút thông tin hơn – KairisCharm