Хмм ...
Я создаю подкласс зрения как внутренний класс в моей Деятельности. Прежде чем я просто связался с этим взглядом из моей деятельности с:
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
Итак, это представление работало раньше, когда я связывался с ним напрямую, но когда я попытался добавить его в файл 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. Он жалуется на «строку № 3» в двоичном XML-файле, и если речь идет о main.xml, то это объявление пакета, которое я трижды проверил.
EDIT
Я попытался сделать это представление отдельным классом (т.е. не внутренним классом), и это работает. После некоторых поисков я нашел несколько сообщений о том, что тег xml должен выглядеть следующим образом:
<com.grafightscratch.ochemmer.MoleculeTablet$MoleculeTabletView ...>
Т.е. знак доллара должен использоваться для отделения внутреннего класса от основного класса. Тем не менее, Eclipse недоволен этим, называет это ошибкой и отказывается разрешить мне создавать или развертывать с этим персонажем. Теперь возникает вопрос: как ссылаться на View, являющийся внутренним классом?