当前位置:  开发笔记 > Android > 正文

引用layout/main.xml中的内部类View时出错

如何解决《引用layout/main.xml中的内部类View时出错》经验,为你挑选了3个好方法。

哎呀...

我在Activity中创建了一个视图的子类作为内部类.之前我只是从我的活动链接到此视图:

setContentView(new CustomView(this));

没有问题.

然而,现在,我的视图变得越来越复杂,所以我将它作为FrameLayout的一部分,这样我就可以将它作为基本视图并在其上添加一个Spinner小部件.问题是,当我这样做时,我收到一个错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.grafightscratch.ochemmer/com.grafightscratch.ochemmer.MoleculeTablet}: android.view.InflateException: Binary XML file line #4: Error inflating class com.grafightscratch.ochemmer.MoleculeTablet.MoleculeTabletView
...
Caused by: android.view.InflateException: Binary XML file line #4: Error inflating class com.grafightscratch.ochemmer.MoleculeTablet.MoleculeTabletView
...
Caused by: java.lang.ClassNotFoundException: com.grafightscratch.ochemmer.MoleculeTablet.MoleculeTabletView in loader dalvik.system.PathClassLoader@43b74a28

所以这个视图在我直接链接到它之前有效,但是当我尝试将它作为framelayout的一部分添加到main.xml文件中时,我得到了上述错误.我也试过放入一个布局,只有通过以下方式显示:


什么都行不通.我一直收到InflateException/ClassNotFoundException错误.它抱怨二进制XML文件中的"第3行",如果它正在讨论main.xml,那就是我已经三次检查的包声明.

编辑 我试图使这个视图成为一个单独的类(即 - 不是内部类),它的工作原理.经过一番搜索,我发现一些帖子说xml标签应该是这样的:


即,应使用美元符号将内部类与主类分开.但是,Eclipse barfs就此称之为错误,并拒绝让我在那里构建或部署该角色.所以现在问题变成了:如何引用一个内部类的View?



1> Romain Guy..:

对于内部类,语法变为:


原因是$是XML标签中的非法字符.


只需注意,xml标签可能需要比"View"标签"更接近"您的类(在我的情况下,我需要一个`ViewGroup`)
确保xml视图标记是小写,然后您应该能够将它强制转换为您指定的类

2> 小智..:

我遇到了同样的问题.但是,XML文件中的语法是正确的.

最终为我解决问题的是内部类需要声明为静态.例如:

public static class myWebView extends WebView



3> Adnan Abdoll..:

对于内部阶级:


对于内部课程,您必须申报您的课程:

public static InnerClass

static 是必需的.

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有