是的,Android的ViewModelProvider類可以用于Fragment。在Fragment中使用ViewModelProvider時,需要確保在onCreateView或onActivityCreated方法中進行實例化。這是因為ViewModelProvider需要與生命周期關聯,以確保在正確的時機創建和銷毀ViewModel實例。
以下是在Fragment中使用ViewModelProvider的示例:
public class MyFragment extends Fragment {
private MyViewModel myViewModel;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_my, container, false);
// 使用ViewModelProvider實例化ViewModel
myViewModel = new ViewModelProvider(this).get(MyViewModel.class);
// 在這里使用myViewModel進行數據操作
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// 在這里也可以使用myViewModel進行數據操作
}
}
注意:在這個示例中,我們使用了默認的ViewModelProvider.Factory,它會根據類的類型自動創建ViewModel實例。如果你需要自定義ViewModel的創建邏輯,可以為ViewModel提供一個自定義的Factory。