Хмм...
Я создаю подкласс представления как внутренний класс в моей работе. Прежде чем я просто привяжусь к этому представлению из своей деятельности, выполните следующие действия:
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 [email protected]
Итак, этот вид работал до того, когда я напрямую связался с ним, но когда я попытался добавить его в файл 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, который является объявлением пакета, которое я проверил три раза.
ИЗМЕНИТЬ Я попытался сделать этот вид отдельным классом (т.е. Не внутренним классом), и он работает. После некоторого поиска я нашел несколько сообщений о том, что тег xml должен выглядеть так:
<com.grafightscratch.ochemmer.MoleculeTablet$MoleculeTabletView ...>
То есть знак доллара должен использоваться для ветки внутреннего класса от основного класса. Тем не менее, Eclipse barfs на этом, называет это ошибкой и отказывается позволить мне создавать или развертывать с этим символом. Итак, теперь возникает вопрос: как ссылается на представление, являющееся внутренним классом?