Android 如何将MVVM与任何片段一起使用?

Android 如何将MVVM与任何片段一起使用?,android,android-fragments,mvvm,android-mvvm,Android,Android Fragments,Mvvm,Android Mvvm,我有一个关于活动的表格,当用户单击任何选项卡时,就会加载一个片段。其中一个片段包含在抽屉布局中运行的NavigationView。现在的问题是,我必须为整个应用程序实现MVVM,因此对于片段,我也为活动实现了MVVM,但在为片段实现MVVM的过程中,我遇到了问题,如何处理使用MVVM选择的项,以及绑定什么和如何绑定?我找不到合适的工作样品。代码如下: MoreFragment.java: fragment_more.xml: 请尽可能提供帮助。使用: DataBindingUtil.inflat

我有一个关于活动的表格,当用户单击任何选项卡时,就会加载一个片段。其中一个片段包含在抽屉布局中运行的NavigationView。现在的问题是,我必须为整个应用程序实现MVVM,因此对于片段,我也为活动实现了MVVM,但在为片段实现MVVM的过程中,我遇到了问题,如何处理使用MVVM选择的项,以及绑定什么和如何绑定?我找不到合适的工作样品。代码如下:

MoreFragment.java:

fragment_more.xml:

请尽可能提供帮助。

使用:

DataBindingUtil.inflate(inflater, layoutId(), container, false)
使布局膨胀

别忘了加上:

<data>
    <variable
            name="model"
            type="MoreFragmentViewModel"/>
</data>

正如@Alex指出的,您没有正确使用。其次,最好在活动中创建onMyItemSelected函数,并从中调用viewmodel.dostuffinItemSelected。原因是您不能从viewmodel中修改UI。大多数情况下,您可能希望显示/隐藏单击事件的进度,而这在viewmodel中是不可能的。@ZohaibAmir很抱歉,我是mvvm的新手,所以现在这样做有点复杂,因为还有两个片段,我不知道如何从一个活动中处理它们。如果你能从一些例子中告诉我,我将如何处理一个活动中的多个片段,这将非常有帮助。google官方文档中有一个很好的例子:总结一下,在片段中创建viewmodel时,您可以将activitygetActivity作为上下文而不是片段传递给它:``ViewModelProviders.ofgetActivity.getSharedViewModel.class;```现在,两个片段将获得相同的ViewModel实例。请记住,当您创建ViewModel时,它对每个上下文都是独立的,这也意味着如果上下文相同,则对象是共享的。好的,我将尝试实现它,谢谢。从onCreateView返回什么。。然后?返回ViewDataBinding的根视图当我遇到这个错误时,是否还需要任何其他更改:无法生成视图绑定器java.lang.StackOverflowErrorIt可能是因为某些导入不好,可能是更零碎的ViewModel作为变量类型作为变量类型?
import android.arch.lifecycle.ViewModel;
import android.databinding.BaseObservable;

public class MoreFragmentViewModel extends ViewModel {

    public void onMyItemSelected(){
        System.out.print("Item Clicked");
    }
}
DataBindingUtil.inflate(inflater, layoutId(), container, false)
<data>
    <variable
            name="model"
            type="MoreFragmentViewModel"/>
</data>