[android] MVVM – 6. Fragment

fragment 를 사용하는 것도 약간 달라졌다.

다른 건 다 똑같지만 onCreateView에서는  getRoot()를 붙여서 리턴하고 onActivityCreated에서는 바로 바인딩으로 받으면 된다. 자동으로 만들어주는 바인딩 클래스도 되지만 그냥 모델하나만 넣을 거면 `ViewDataBinding`으로 받아도 충분하다. 하지만 그래도 나중에 필요할 때 이름 바꾸기 귀찮으니 제대로 된 이름 사용하는 걸로 받는 게 낫지 싶다.

바인딩으로 하니 ButterKnife를 따로 안해서 정말 편하다.

 

public class InputFragment extends Fragment {
  public InputFragment() {
    // Required empty public constructor
  }

  public static InputFragment instance() {
    return new InputFragment();
  }

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return DataBindingUtil.inflate(inflater, R.layout.activity_input, container, false).getRoot();
  }

  @Override
  public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    InputViewModel model = new InputViewModel();
    ActivityInputBinding binding = DataBindingUtil.getBinding(getView());
    binding.setModel(model);
    model.onCreate();
  }
}

 

기존 예제에서 사용했던 걸 그대로 사용한다고 치면 저렇게만 해줘도 충분하다.