반응형
주의점:
라이프 사이클 소유자가 설정해야합니다 있습니다 binding로 binding.setLifecycleOwner(this). MainViewModel에 대해서도 설정해야 합니다 binding. 그렇지 않으면 UI가 제대로 작동하지 않습니다. 확실하지 않은 경우 항상 여기에서 공식 문서를 확인하십시오.
public class MainFragment extends Fragment {
private MainViewModel mainViewModel;
private FragmentMainBinding binding;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_main, container,
false);
binding.setLifecycleOwner(this); //!! 중요 설정하지 않으면 UI가 변경되지 않음
mainViewModel = ViewModelProviders.of(this).get(MainViewModel.class);
binding.setViewModel(mainViewModel);
return binding.getRoot();
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mainViewModel.getTakePhoto().observe(getViewLifecycleOwner(), takePhoto -> {
if (takePhoto) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (intent.resolveActivity(getActivity().getPackageManager()) != null) {
File photo = mainViewModel.storeImage();
if (photo != null) {
Uri photoURI = FileProvider.getUriForFile(getActivity(),"com.example.fileprovider", photo);
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
this.startActivityForResult(intent, 0);
}
}
}
});
binding.executePendingBindings();
}
}
참고자료:
[1] UI에서 liveData가 업데이트 되지 않음 ,https://newbedev.com/mutablelivedata-not-updating-in-ui
반응형
'안드로이드' 카테고리의 다른 글
[android] 위치 정보 서비스 GPS/Network LocationTracker (Kotlin) (0) | 2021.11.25 |
---|---|
[Android] EdtitText 필터 적용, 이모지 및 특수문자 입력 차단 (0) | 2021.11.23 |
[Android] startActivityForResult deprecated kotlin (0) | 2021.11.10 |
[Android] DPI 별 기준 해상도. (0) | 2021.10.18 |
[Android] 리싸이클러 뷰 구현하기. (0) | 2021.10.04 |