【发布时间】:2018-08-28 12:56:15
【问题描述】:
我正在研究 MVVM 架构。我想在我的 android 应用程序中的模块之间共享视图模型的实例。当用户从应用程序模块完成骑行时,我想访问我的聊天模块视图模型实例以执行一些数据库操作,即清除对话实体等。我正在使用带有视图模型的房间数据库。 ChatActivityNew 是聊天模块中的一个活动。
应用模块预订活动
Dialogs.INSTANCE.showRideStatusDialog(mCurrentActivity, new View.OnClickListener() {
@Override
public void onClick(View v) {
Dialogs.INSTANCE.dismissDialog();
Dialogs.INSTANCE.showLoader(mCurrentActivity);
ChatActivityNew.setMukamalListener(iMukamalCallback);
dataRepository.requestEndRide(mCurrentActivity, driversDataHandler);
}
}
聊天模块 ChatActivityNew
/**
* Set the Mukamal Callback listener & call onMukamal abstract
* method which takes Message view model as a parameter.
*
* @param iMukamalCallback is a callback listener.
*/
public static void setMukamalListener(IMukamalCallback iMukamalCallback) {
mukamalCallback = iMukamalCallback;
mukamalCallback.onMukamal(mModel);
}
mModel 为空,因为活动尚未加载,MessageViewModel 为空,所以我如何访问 MessageViewModel 的实例。
我遵循了 android 开发者文档 https://developer.android.com/topic/libraries/architecture/viewmodel
任何帮助都将不胜感激。
编辑
Dialogs.INSTANCE.showRideStatusDialog(mCurrentActivity, new View.OnClickListener() {
@Override
public void onClick(View v) {
Dialogs.INSTANCE.dismissDialog();
Dialogs.INSTANCE.showLoader(mCurrentActivity);
EventBus.getDefault().postSticky(
new MessageEvent(com.example.chatmodule.utils.Constants.RIDE_COMPLETE)
);
dataRepository.requestEndRide(mCurrentActivity, driversDataHandler);
}
}
聊天模块订阅方法
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
public void onMessageEvent(MessageEvent event) {
if (mModel != null && event.message.equalsIgnoreCase(RIDE_COMPLETE)){
mModel.deleteConversation();
mModel.deleteMessages();
}
}
【问题讨论】:
-
我的问题有什么问题没有人回复???