将活动/片段引用传递给MVVM体系结构中的数据绑定布局

时间:2019-08-05 07:34:06

标签: android kotlin mvvm data-binding

我有一个使用MVVM和数据绑定的应用程序的简单示例,该应用程序基本上是两个EditText,然后是一个按钮。 单击该按钮应打开一个新活动。

是否有任何理由不将活动引用传递给布局,然后调用它以调用新活动?

<data>
    <variable
        name="firstActivity"
        type="com.example.view.FirstActivity"/>

</data>

<Button
    android:id="@+id/button"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:onClick="@{() -> firstActivity.navigateToNextPage()"/>

1 个答案:

答案 0 :(得分:0)

它完全违反了MVVM架构,因为您始终将视图模型绑定到布局而不是视图。

视图应该是独立的,以便获得松散耦合,例如,在这种情况下,意图代码位于View中,而视图直接由布局忽略,而无需viewmodel干预。

由于视图知道您要在什么基础上进行新活动,因此视图中的业务逻辑不是开发人员要做的常规方法。

等等……我想上面有很多话,那该怎么办呢?看下面w

1。创建各个视图的视图模型 2.绑定按钮时也要绑定editText,嘿,但是这次要用viewModel。

  1. 在视图模型中编写业务逻辑。

4。将该逻辑函数绑定到布局的OnClicked中。

  1. 现在在viewmodel中编写一个on属性更改事件。

  2. 使用on属性更改回调来调用onproperty更改事件。

  3. 完成后,只有u才能执行Intent函数。

因此,最后,View不知道为什么要使用其他功能。

注意:-

新手在堆栈中溢出,因此请原谅打破写答案的任何违规行为。 谢谢