私は狂った私のコードに問題があります。カスタムビューのフィールドは、インフレーション後にnullです - データバインド
私はFragment
にDataBinding
を使用しています。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_appointment, container, false);
mViewModel = new AppointmentViewModel(((DetailActivity) getActivity()).getSalonId());
mBinding.setViewModel(mViewModel);
mBinding.datePopup.setViewModel(mViewModel);
そして、私のCustomView
public class DatePopupView extends FrameLayout {
private Date mPickedDate = null;
private CustomDatePopupViewBinding mBinding = null;
public DatePopupView(Context context) {
super(context);
setup();
}
public DatePopupView(Context context, AttributeSet attrs) {
super(context, attrs);
setup();
}
public void setup() {
mPickedDate = new Date();
LayoutInflater inflater = LayoutInflater.from(getContext());
mBinding = CustomDatePopupViewBinding.inflate(inflater, this, true);}
そして膨張が、これは同じCustomView
クラスで呼び出されonCreateView
で行われた後に、あまりにもDataBinding
を使用したい:
public void setViewModel(AppointmentViewModel viewModel) {
mBinding.setViewModel(viewModel);
}
問題がありますこの方法ではNullPointerException
が得られます。
私の意見では、CustomView
オブジェクトが既にインスタンス化されており、フィールドが設定されているため、これはできません。
そうでなければ、CustomView
からmBinding.datePopup
にアクセスできませんでした。
私はこのことを理解する助けてください; P
感謝;)
ありがとうございました。 私は2.2プレビュー7を使用しています – Appyx
私は2.2プレビュー7を使用していましたが、2.2 Beta-1を使用していました。まだ動作していません:( –
これは同じバグではないかもしれません。問題を再現したり、Android.comでバグを報告したりするプロジェクトへのリンクを投稿できますか? –