将类型Android Fragment转换为MvxFragment

本文关键字:MvxFragment 转换 Fragment 类型 Android | 更新日期: 2023-09-27 18:09:48

我正在将我们的代码库更新为最新的MVVMCross库。我遇到了一个错误,上面写着:

错误CS0030:无法转换类型Android.Support.V4.App.Fragment' to MvvmCross.Droid.FullFragging.FFragments.MvxFragment'(CS0030((QualBoard.Mobile.Droid(

代码:

public override Fragment GetItem(int position)
{
    var frag = Fragments.ElementAt(position);
    var fragment = Fragment.Instantiate(_context,
        FragmentJavaName(frag.FragmentType));
    ((MvxFragment)fragment).DataContext = frag.ViewModel;
    return fragment;
}

问题子行是:((MvxFragment)fragment).DataContext = frag.ViewModel;

我很难将MVVMCross版本4中应该使用的内容组合起来,以取代以前使用的内容。

将类型Android Fragment转换为MvxFragment

我认为问题在于您正在转换为错误的MvxFragment类类型。

Mvvmcross提供两种MvxFragment类类型,以匹配安卓系统中提供的类型:

  • 本机片段-可在MvvmCross.Droid.FullFraging nuget包中找到,并提供MvvmCross.Droid.FullFragging.Fragments.MvxFragment。该类与API 11中引入的原生Android Fragment相匹配
  • 支持库Fragmet-可在MvvvmCross.Droid.Support.V4 nuget包中找到,并提供MvvmCross.Droid.Support.V4.MvxFragment。此类与Android支持库Fragmets相匹配

错误CS0030:无法将类型Android.Support.V4.App.Fragment转换为MvvmCross.Droid.FullFragging.Fragments.MvxFragment

从您的错误来看,我认为您使用的是支持库中的片段,因此应该使用MvvmCross.Droid.Support.V4.MvxFragment