Error referencing an inner class View in layout/main.xml,如何解决?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (17)

我在我的活动中创建了一个视图的子类,作为一个内部类。在我从我的活动中简单地链接到这个视图之前,我使用:

setContentView(new CustomView(this));

没有问题。

但是现在,我的视图变得越来越复杂,所以我将其作为FrameLayout的一部分,以便我可以将它作为基本视图,并在其之上添加一个SPINTER小部件。问题是,当我这样做时,我会得到一个错误:

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文件时,我得到了上面的错误。我还试着将布局放到一个布局中,只通过以下方式显示:

<com.grafightscratch.ochemmer.MoleculeTablet.MoleculeTabletView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/molecule_tablet_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>

什么都不管用。我一直在获取InflateException/ClassNotFoundException错误。怎么做?

提问于
用户回答回答于

对于内部类,语法变成:

<view class="com.grafightscratch.ochemmer.MoleculeTablet$MoleculeTabletView" />

原因是$是XML标记中的非法字符。

用户回答回答于

扫码关注云+社区