Xamarin Fragment实例化导致Java.Lang.ClassNotFoundException

时间:2018-01-16 17:35:02

标签: c# android android-fragments xamarin xamarin.android

我正在尝试根据此tutorial为Xamarin中的Android应用创建底部导航视图。

本教程没有解释如何正确实例化Fragment。它使用Fragment.NewInstance方法,该方法在继承自Android.Support.V4.App.Fragment的类中不存在。经过一番研究后我发现,这是一个静态方法,本教程中没有提到。该方法基本上实例化片段 有了这些知识,我创建了以下课程:

using Android.OS;
using Android.Runtime;
using Android.Support.V4.App;
using Android.Views;

namespace Arbitrary
{
    [Register("arbitrary.ArbitraryFragment")]
    public class ArbitraryFragment : Fragment
    {
        public ArbitraryFragment() 
            : base()
        {
        }

        public override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
        }

        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            var ignored = base.OnCreateView(inflater, container, savedInstanceState);
            return inflater.Inflate(Resource.Layout.ArbitraryFragment, null);
        }

        public static ArbitraryFragment NewInstance()
        {
            return new ArbitraryFragment() { Arguments = new Bundle() };
        }

    }
}

在我的MainActivity中,我尝试使用NewInstance方法实例化我的片段。但是该方法在尝试执行构造函数时会抛出ClassNotFoundException。我读到你必须使用Register - 属性来防止这样的错误。参数中传递的string应该与Java的命名约定相对应。我在Fragment类中做到了,但仍然提到Exception。

我该如何解决?

0 个答案:

没有答案