Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从库类定义xml元素_Android_Xml_Android Library - Fatal编程技术网

Android 从库类定义xml元素

Android 从库类定义xml元素,android,xml,android-library,Android,Xml,Android Library,我的项目中包含了一个库,希望在XML文件中定义和元素,此元素类型来自驻留在该库中的类,当我仅使用名称声明它时,它通过运行给我一个错误: <ClassType android:id="@+id/my_view" android:layout_width="match_parent" android:layout_height="match_parent" /> 然后在爪哇 ClassType my_view = (ClassType) findViewBy

我的项目中包含了一个库,希望在XML文件中定义和元素,此元素类型来自驻留在该库中的类,当我仅使用名称声明它时,它通过运行给我一个错误:

  <ClassType
    android:id="@+id/my_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
然后在爪哇

ClassType my_view = (ClassType) findViewById(R.id.my_view);
更新:

尝试添加整个命名空间时的总日志:

10-26 14:45:47.753: E/AndroidRuntime(1430): FATAL EXCEPTION: main
10-26 14:45:47.753: E/AndroidRuntime(1430): Process: com.lockscreen, PID: 1430
10-26 14:45:47.753: E/AndroidRuntime(1430): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lockscreen/com.lockscreen.LockScreenAppActivity}: android.view.InflateException: Binary XML file line #8: Error inflating class com.example.ClassType
10-26 14:45:47.753: E/AndroidRuntime(1430):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at android.os.Handler.dispatchMessage(Handler.java:102)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at android.os.Looper.loop(Looper.java:136)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at android.app.ActivityThread.main(ActivityThread.java:5017)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at java.lang.reflect.Method.invokeNative(Native Method)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at java.lang.reflect.Method.invoke(Method.java:515)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at dalvik.system.NativeStart.main(Native Method)
10-26 14:45:47.753: E/AndroidRuntime(1430): Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class com.example.ClassType
10-26 14:45:47.753: E/AndroidRuntime(1430):     at android.view.LayoutInflater.createView(LayoutInflater.java:620)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at android.app.Activity.setContentView(Activity.java:1929)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at com.lockscreen.LockScreenAppActivity.onCreate(LockScreenAppActivity.java:75)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at android.app.Activity.performCreate(Activity.java:5231)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
10-26 14:45:47.753: E/AndroidRuntime(1430):     ... 11 more
10-26 14:45:47.753: E/AndroidRuntime(1430): Caused by: java.lang.reflect.InvocationTargetException
10-26 14:45:47.753: E/AndroidRuntime(1430):     at java.lang.reflect.Constructor.constructNative(Native Method)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
10-26 14:45:47.753: E/AndroidRuntime(1430):     at android.view.LayoutInflater.createView(LayoutInflater.java:594)
10-26 14:45:47.753: E/AndroidRuntime(1430):     ... 22 more
10-26 14:45:47.753: E/AndroidRuntime(1430): Caused by: java.lang.NoClassDefFoundError: com.squareup.timessquare.R$styleable
10-26 14:45:47.753: E/AndroidRuntime(1430):     at com.example.ClassType.<init>(ClassType.java:99)
10-26 14:45:47.753: E/AndroidRuntime(1430):     ... 25 more
10-26 14:45:47.753:E/AndroidRuntime(1430):致命异常:main
10-26 14:45:47.753:E/AndroidRuntime(1430):进程:com.lockscreen,PID:1430
10-26 14:45:47.753:E/AndroidRuntime(1430):java.lang.RuntimeException:无法启动活动组件信息{com.lockscreen/com.lockscreen.lockscreen AppActivity}:android.view.InflateException:二进制XML文件行#8:膨胀类com.example.ClassType时出错
10-26 14:45:47.753:E/AndroidRuntime(1430):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
10-26 14:45:47.753:E/AndroidRuntime(1430):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
10-26 14:45:47.753:E/AndroidRuntime(1430):在android.app.ActivityThread.access$800(ActivityThread.java:135)
10-26 14:45:47.753:E/AndroidRuntime(1430):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
10-26 14:45:47.753:E/AndroidRuntime(1430):在android.os.Handler.dispatchMessage(Handler.java:102)上
10-26 14:45:47.753:E/AndroidRuntime(1430):在android.os.Looper.loop(Looper.java:136)
10-26 14:45:47.753:E/AndroidRuntime(1430):位于android.app.ActivityThread.main(ActivityThread.java:5017)
10-26 14:45:47.753:E/AndroidRuntime(1430):位于java.lang.reflect.Method.Invokenactive(本机方法)
10-26 14:45:47.753:E/AndroidRuntime(1430):在java.lang.reflect.Method.invoke(Method.java:515)
10-26 14:45:47.753:E/AndroidRuntime(1430):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
10-26 14:45:47.753:E/AndroidRuntime(1430):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
10-26 14:45:47.753:E/AndroidRuntime(1430):在dalvik.system.NativeStart.main(本机方法)
10-26 14:45:47.753:E/AndroidRuntime(1430):由以下原因引起:android.view.InflateException:二进制XML文件行#8:膨胀类com.example.ClassType时出错
10-26 14:45:47.753:E/AndroidRuntime(1430):在android.view.LayoutInflater.createView(LayoutInflater.java:620)
10-26 14:45:47.753:E/AndroidRuntime(1430):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
10-26 14:45:47.753:E/AndroidRuntime(1430):在android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
10-26 14:45:47.753:E/AndroidRuntime(1430):在android.view.LayoutInflater.inflate(LayoutInflater.java:492)
10-26 14:45:47.753:E/AndroidRuntime(1430):在android.view.LayoutInflater.inflate(LayoutInflater.java:397)
10-26 14:45:47.753:E/AndroidRuntime(1430):在android.view.LayoutInflater.inflate(LayoutInflater.java:353)
10-26 14:45:47.753:E/AndroidRuntime(1430):在com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)上
10-26 14:45:47.753:E/AndroidRuntime(1430):在android.app.Activity.setContentView(Activity.java:1929)上
10-26 14:45:47.753:E/AndroidRuntime(1430):在com.lockscreen.lockscreeenappactivity.onCreate(lockscreeenappactivity.java:75)
10-26 14:45:47.753:E/AndroidRuntime(1430):在android.app.Activity.performCreate(Activity.java:5231)上
10-26 14:45:47.753:E/AndroidRuntime(1430):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
10-26 14:45:47.753:E/AndroidRuntime(1430):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
10-26 14:45:47.753:E/AndroidRuntime(1430):。。。还有11个
10-26 14:45:47.753:E/AndroidRuntime(1430):由以下原因引起:java.lang.reflect.InvocationTargetException
10-26 14:45:47.753:E/AndroidRuntime(1430):位于java.lang.reflect.Constructor.constructNative(本机方法)
10-26 14:45:47.753:E/AndroidRuntime(1430):位于java.lang.reflect.Constructor.newInstance(Constructor.java:423)
10-26 14:45:47.753:E/AndroidRuntime(1430):在android.view.LayoutInflater.createView(LayoutInflater.java:594)
10-26 14:45:47.753:E/AndroidRuntime(1430):。。。还有22个
10-26 14:45:47.753:E/AndroidRuntime(1430):由以下原因引起:java.lang.NoClassDefFoundError:com.squareup.timesquare.R$styleable
10-26 14:45:47.753:E/AndroidRuntime(1430):位于com.example.ClassType.(ClassType.java:99)
10-26 14:45:47.753:E/AndroidRuntime(1430):。。。25多

放置整个名称空间

 <com.library.namespace.ClassType
    android:id="@+id/my_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

您必须在xml中使用完全限定名(FQN)

<com.example.ClassType
android:id="@+id/my_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />


在第一种情况下,它会给您带来什么错误?如何获取整个名称空间,它是一个作为
jar
文件包含在我的libs文件夹中的库。您说过您也尝试过将其强制转换,因此您必须知道名称空间。为了能够转换它,您添加了一个
导入
,这就是您要查找的名称空间。不,我不是说我不知道名称空间,我知道它,而是如何让XML获取它。在java中,我只导入带有名称空间的类,但在用xml编写整个名称空间时,它会崩溃,并在运行时给我“错误膨胀类”。即使xml来自库,它的名称空间也不会有任何问题。您有关于错误的更多详细信息吗?我添加了将整个名称空间添加到xml时获得的完整日志
<com.example.ClassType
android:id="@+id/my_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />