【问题标题】:How can start a activity in the ViewModel?如何在 ViewModel 中启动一个活动?
【发布时间】:2019-02-06 10:19:00
【问题描述】:

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

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

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

但是这段代码崩溃了,如何从 AndroidViewModel 打开另一个活动?这是最好的方法吗?

出现的错误如下:

从 Activity 上下文之外调用 startActivity() 需要 FLAG_ACTIVITY_NEW_TASK 标志。这真的是你想要的吗?

谢谢

【问题讨论】:

  • 如果代码崩溃会有错误日志,请与您的问题一起发布。

标签: android android-activity android-mvvm


【解决方案1】:

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

一种方法是:

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

【讨论】:

  • 这是我的第一个选项,但我有以下代码:public void startRegister(){ register.setValue(true); register.setValue(false); } 当这个布尔值改变时打开代码,但我认为这也不是一个好方法,也许你有更好的想法那是怎么做到的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-18
  • 1970-01-01
  • 2021-08-28
  • 1970-01-01
  • 1970-01-01
  • 2011-01-13
  • 2016-01-30
相关资源
最近更新 更多