[英]Android: (...)Fragment class and (...)ViewModel class
我對android環境比較陌生。 我有一個從模板創建的項目。 在這個項目中,我使用了很多片段。 為每個片段創建了一個名為 [...]Fragment.java 和 [...]ViewModel.java 的類。 各個班級負責什么。 什么進入第一個,什么進入第二個?
第一類:
public class HomeFragment extends Fragment {
private HomeViewModel homeViewModel;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
homeViewModel =
ViewModelProviders.of(this).get(HomeViewModel.class);
View root = inflater.inflate(R.layout.fragment_home, container, false);
final TextView textView = root.findViewById(R.id.text_home);
homeViewModel.getText().observe(this, new Observer<String>() {
@Override
public void onChanged(@Nullable String s) {
textView.setText(s);
}
});
return root;
}
}
第二類:
public class HomeViewModel extends ViewModel {
private MutableLiveData<String> mText;
public HomeViewModel() {
mText = new MutableLiveData<>();
mText.setValue("This is home fragment");
}
public LiveData<String> getText() {
return mText;
}
}
fragment 是您的視圖控制器,它控制視圖,知道何時單擊按鈕,或放置文本的位置,或者用戶是否輸入了編輯文本。
viewModel 負責應用程序的邏輯和數據,例如單擊按鈕時執行的操作,或者 textView 應顯示的內容。 單擊按鈕時,片段會調用 viewModel 來執行正確的操作。 視圖(您的片段)不應該能夠更改您的 viewModel 中的屬性,它應該能夠只觀察它們,為此我們使用 LiveData。
它們都是稱為 MVVM 的體系結構的一部分,MVVM 是模型、視圖、視圖-模型查找的縮寫 MVVM 以獲取更多信息
此外,這個大膽的課程可以幫助你很多
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.