错误膨胀类片段,Xamarin

时间:2014-04-07 10:09:52

标签: c# android android-fragments xamarin

将片段膨胀为布局时出错。 我正在使用的IDE是 Xamarin ,这是一个用C#编程语言开发的android工具。

我在此目录中的类

上收到错误

JeugdbewegingApp \ JeugdbewegingApp \演示\ MainMenu.cs

在下面的代码段中,片段类名称引发了错误。 此代码来自 NewsFeed.axml 布局文件。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <Button
        android:id="@+id/myButton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="test" />
    <TextView
        android:text="Text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView1" />
    <fragment
        class="jeugdbewegingApp/jeugdbewegingApp/presentation/MainMenu"
        android:id="@+id/menu_fragment"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />
</LinearLayout>

我知道需要用小写编写的命名空间,但你的文件和目录是否需要小写?

我已经被困了很长一段时间而无法找到解决方案,我正在使用的教程是 http://docs.xamarin.com/guides/android/platform_features/fragments/part_1_-_creating_a_fragment/

完整的错误就是这个

  

Android.Views.InflateException:二进制XML文件行#1:错误   膨胀类片段在   Android.Runtime.JNIEnv.CallNonvirtualVoidMethod   (intptr,intptr,intptr,Android.Runtime.JValue [])[0x00084] in   /Users/builder/data/lanes/monodroid-mlion-monodroid-4.12-series/a1e3982a/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:895   在Android.App.Activity.SetContentView(int)[0x00070]中   /Users/builder/data/lanes/monodroid-mlion-monodroid-4.12-series/a1e3982a/source/monodroid/src/Mono.Android/platforms/android-19/src/generated/Android.App.Activity.cs:4252   在JeugdbewegingApp.NewsFeed.OnCreate(Android.OS.Bundle)[0x00009] in   c:\ Users \ Jacob \ Dropbox \ 2ICT \ 2de Semester \ Projecten   1个\源\雅各布\ JeugdbewegingApp \ JeugdbewegingApp \演示\ NewsFeed.cs:24   在Android.App.Activity.n_OnCreate_Landroid_os_Bundle_   (intptr,intptr,intptr)[0x00011] in   /Users/builder/data/lanes/monodroid-mlion-monodroid-4.12-series/a1e3982a/source/monodroid/src/Mono.Android/platforms/android-19/src/generated/Android.App.Activity.cs:2178   at at(包装器动态方法)   object.08e9bb04-13ac-4397-9345-6bea3473292f(intptr,intptr,intptr)at ---托管异常堆栈跟踪结束---
  在android.view.InflateException:二进制XML文件行#1:错误   在at处膨胀类片段   android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)   在android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
  在android.view.LayoutInflater.inflate(LayoutInflater.java:492)
  在android.view.LayoutInflater.inflate(LayoutInflater.java:397)
  在android.view.LayoutInflater.inflate(LayoutInflater.java:353)
  at at   com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)   at at android.app.Activity.setContentView(Activity.java:1929)at at   jeugdbewegingapp.NewsFeed.n_onCreate(Native Method)at at   jeugdbewegingapp.NewsFeed.onCreate(NewsFeed.java:28)at at   android.app.Activity.performCreate(Activity.java:5231)at at   android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)   at at   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)   at at   android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)   在android.app.ActivityThread.access $ 800(ActivityThread.java:135)
  at at   android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1196)
  at at android.os.Handler.dispatchMessage(Handler.java:102)at at   android.os.Looper.loop(Looper.java:136)at at   android.app.ActivityThread.main(ActivityThread.java:5017)at at   java处的java.lang.reflect.Method.invokeNative(Native Method)   java处的java.lang.reflect.Method.invoke(Method.java:515)   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:779)   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
  at atalvik.system.NativeStart.main(Native Method)at at Causesed:   android.app.Fragment $ InstantiationException:无法实例化   片段jeugdbewegingapp / jeugdbewegingapp / presentation / MainMenu:make   确定类名存在,是公共的,并且具有空构造函数   在android.app.Fragment.instantiate公开(Fragment.java:597)   at at android.app.Fragment.instantiate(Fragment.java:561)at at   android.app.Activity.onCreateView(Activity.java:4778)at at   android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)   at ... 22 more at引发者:java.lang.ClassNotFoundException:   没找到上课   路径上的“jeugdbewegingapp / jeugdbewegingapp / presentation / MainMenu”:   DexPathList [[zip文件   “/data/app/JeugdbewegingApp.JeugdbewegingApp-1.apk"],nativeLibraryDirectories=[/data/app-lib/JeugdbewegingApp.JeugdbewegingApp-1,   / vendor / lib,/ system / lib]] at   dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)   at at java.lang.ClassLoader.loadClass(ClassLoader.java:497)at at   java处的java.lang.ClassLoader.loadClass(ClassLoader.java:457)   android.app.Fragment.instantiate(Fragment.java:583)at ... 25 more

如果有人能帮助我,我将不胜感激!

1 个答案:

答案 0 :(得分:8)

class属性应该包含类的完整命名空间,而不是路径。正如您所建议的那样,命名空间必须全部小写,因为Java使用小写命名空间。 Xamarin为您的自定义类生成的包装类中的命名空间将为小写。实际的班级名称将保持不变,因此不必小写。

因此,假设您的命名空间为JeugdbewegingApp.JeugdbewegingApp.Presentation.MainMenu,您的片段xml应如下所示......

<fragment
    class="jeugdbewegingapp.jeugdbewegingapp.presentation.MainMenu"
    android:id="@+id/menu_fragment"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />