如何在 ViewModel 中启动一个 activity?

How can start a activity in the ViewModel?

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

在布局中我引用了 AndroidViewModel 方法,在这个方法中我有以下代码:

public void startRegister(){
    Intent myIntent = new Intent(getApplication().getBaseContext(), RegisterActivity.class);
    getApplication().getBaseContext().startActivity(myIntent);
}

但是这段代码崩溃了,我怎样才能从 AndroidViewModel 打开另一个 activity?这是最好的方法吗?

出现的错误如下:

Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

谢谢

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

一种方法是:

  • 有在您的视图中启动 activity 的方法(另一个 activity)
  • 通过 liveData 在 ViewModel 和 View 之间进行通信
  • liveData更新时调用startactivity方法