簡體   English   中英

Android: (...)Fragment 類和 (...)ViewModel 類

[英]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 以獲取更多信息

應用架構指南

此外,這個大膽的課程可以幫助你很多

使用 Kotlin 開發 Android 應用程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM