使用viewModel和livedata在2个活动之间传递数据

时间:2019-04-01 08:22:33

标签: android android-activity viewmodel android-livedata

是否可以使用viewModel类在活动之间传递数据?

我尝试从一个Activity和另一个Activity更新Model对象,并观察第二个Activity的更改,但这没有帮助。我不想使用Bundle,如果可能的话,可以使用viewModel。

1 个答案:

答案 0 :(得分:0)

您可以为视图模型创建单例类,这样您就无需以捆绑或任何形式传递它,也可以在多个活动中使用它。

  

Activity1使用SingleTon类中的getCurrentList()

public class Activity1 extends ViewModel {
    // Create a LiveData with a String
    private MutableLiveData<String> mCurrentList;

    public MutableLiveData<String> getCurrentList() {
        if (mCurrentList == null) {
            mCurrentList = SingleTonDataRepository.getInstance().getCurrentList();
        }
        return mCurrentList;
    }
}
  

Activity2使用SingleTon类中的getCurrentList()

public class Activity2 extends ViewModel {
    // Create a LiveData with a String
    private MutableLiveData<String> mCurrentList;

    public MutableLiveData<String> getCurrentList() {
        if (mCurrentList == null) {
            mCurrentList = SingleTonDataRepository.getInstance().getCurrentList();
        }
        return mCurrentList;
    }
}
  

仅适用于一个MutableLiveData的SingleTon类

public class SingleTonDataRepository     

    private static SingleTonDataRepository mSingleTonDataRepository = new SingleTonDataRepository();

    SingleTonDataRepository(){

    }

    public static SingleTonDataRepository getInstance(){
        if(mSingleTonDataRepository == null){
            mSingleTonDataRepository = new SingleTonDataRepository();
        }
        return mSingleTonDataRepository;
    }

    private MutableLiveData<String> mCurrentList;

    public MutableLiveData<String> getCurrentList() {
        if (mCurrentList == null) {
            mCurrentList = new MutableLiveData<>();
        }
        return mCurrentList;
    }
}

希望有帮助!! :)