首页 > 解决方案 > android 应用程序中活动和多片段的单视图模型

问题描述

我有一个 TravelActivity 活动,一些片段的 ui 层次结构是:

-旅行

--travelActivity(活动)

--addTravel(片段)

--旅行清单(片段)

--存档旅行(片段)

ETC'

我希望如果add travel fragment添加单个旅行项目然后list fragment更新

我的问题:

  1. 最佳实践是什么,我不知道是否为每个片段创建特定的视图模型或为所有片段和活动使用相同的视图模型
  2. 如果相同的视图模型如何与多个片段共享单个视图模型

谢谢!

这是我的视图模型:

public class TravelViewModel extends AndroidViewModel {
    ITravelRepository repository;
    private FirebaseAuth mAuth  = FirebaseAuth.getInstance();
    public User getCurrentUser() {
        FirebaseUser currentUser = mAuth.getCurrentUser();
        .....

    }
    private MutableLiveData<List<Travel>> mutableLiveData = new MutableLiveData<>();
    public TravelViewModel(Application p) {
        super(p);
        repository = TravelRepository.getInstance();
        ITravelRepository.NotifyToTravelListListener notifyToTravelListListener = new ITravelRepository.NotifyToTravelListListener() {
            @Override
            public void onTravelsChanged() {
                List<Travel> travelList = repository.getAllTravels();
                mutableLiveData.setValue(travelList);
            }
        };
        repository.setNotifyToTravelListListener(notifyToTravelListListener);
    }
    void addTravel(Travel travel)
    {
        repository.addTravel(travel);
    }
    public void updateTravel(Travel travel)
    {
        repository.updateTravel(travel);
    }
    MutableLiveData<List<Travel>> getAllTravels()
    {
        return mutableLiveData;
    }
    MutableLiveData<Boolean> getIsSuccess()
    {
       return repository.getIsSuccess();
    }


}

标签: androidfirebaseandroid-fragments

解决方案


推荐阅读