将片段膨胀为布局时出错。 我正在使用的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
如果有人能帮助我,我将不胜感激!
答案 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" />