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