Android 如何在ViewModel中启动活动?

Android 如何在ViewModel中启动活动?,android,android-activity,android-mvvm,Android,Android Activity,Android Mvvm,我正在使用MVVM开发应用程序,但我无法从AndroidViewModel启动活动 在layout中,我引用了AndroidViewModel方法,在该方法中,我有以下代码: public void startRegister(){ Intent myIntent = new Intent(getApplication().getBaseContext(), RegisterActivity.class); getApplication().getBaseContext().st

我正在使用MVVM开发应用程序,但我无法从AndroidViewModel启动活动

在layout中,我引用了AndroidViewModel方法,在该方法中,我有以下代码:

public void startRegister(){
    Intent myIntent = new Intent(getApplication().getBaseContext(), RegisterActivity.class);
    getApplication().getBaseContext().startActivity(myIntent);
}
但是这段代码崩溃了,我如何从AndroidViewModel打开另一个活动?这是最好的方法吗

出现的错误如下:

从活动上下文外部调用startActivity需要 标志\u活动\u新建\u任务标志。这真的是你想要的吗


谢谢

您不应该从ViewModel启动活动,在MVVM中,ViewModel不应该知道有关视图的任何信息

一种办法是:

具有在视图中启动活动的方法另一个活动 通过liveData在ViewModel和视图之间进行通信 在liveData更新时调用start activity方法。
您不应该从ViewModel启动活动,在MVVM中,ViewModel不应该知道有关视图的任何信息

一种办法是:

具有在视图中启动活动的方法另一个活动 通过liveData在ViewModel和视图之间进行通信 在liveData更新时调用start activity方法。
如果代码崩溃,将有错误日志,将其与您的问题一起发布。如果代码崩溃,将有错误日志,将其与您的问题一起发布。这是我的第一个选项,但我有以下代码:public void startRegister{register.setValuetrue;register.setValuefalse;}当此布尔值更改时,打开代码,但我认为这也不是一个好的方法,也许你有一个更好的想法,怎么做?这是我的第一个选择,但我有以下代码:public void startRegister{register.setValuetrue;register.setValuefalse;}当这个布尔值改变时,打开代码,但我认为这也不是一个好的方法,也许你有个更好的主意,怎么做?