Android раздувает пользовательское представление в XML Ошибка ClassNotFound
У меня есть некоторые проблемы с моим XML-кодом, надеюсь, вы сможете мне помочь.
У меня есть этот класс в этом пакете:
package com.example.myview
public class CustomDialog extends DialogPreference {
public CustomDialog(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public CustomDialog(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
}
И тогда у меня есть этот файл предпочтений XML:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<com.example.myview.CustomDialog
android:dialogMessage="Are you sure you wish delete you account"
android:key="deleteAccountPreference"
android:negativeButtonText="Cancel"
android:positiveButtonText="Okay"
android:summary="@string/preferences_deleteaccount_summary"
android:title="@string/preferences_deleteaccount_title" />
</PreferenceScreen>
И когда я запускаю код, я получаю эту ошибку:
03-16 17:03:18.032: E/AndroidRuntime(20224): android.view.InflateException: Binary XML file line #4: Error inflating class com.example.myview.CustomDialog
...
03-16 17:03:18.032: E/AndroidRuntime(20224): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.myview.CustomDialog" on path: .
Подводя итог моей проблеме, я хочу знать, как изменить путь, по которому просматривается XML-файл, или выяснить, почему он не может раздуть мое пользовательское представление.
Заранее спасибо:)
1 ответ
Я столкнулся, по сути, с той же проблемой, о которой ты упоминал выше. Я предполагаю, что вы пытались переключаться между графическим макетом и представлениями XML для вашего предпочтительного XML-файла, верно? Вот мой дешевый способ обойти мою проблему инициализации (которая должна быть похожа на вашу проблему ClassNotFoundException):
- Скопируйте существующий класс, на который есть аналогичные ссылки в xml (он также имеет что-то вроде com..ClassName... в xml, и переименуйте "ClassName" в CustomDialog (в вашем конкретном случае)
- После этого я все еще получил ошибку "класс не найден" - я просто перестроил весь свой проект, и эта ошибка исчезла. Мой недавно созданный виджет отображается соответствующим образом в графическом макете.
Я еще не выяснил, столкнусь ли я с раздувающими ошибками, которые вы сделали, но я надеюсь, что мой ответ все еще поможет Извините, если это не так, на самом деле это мой первый пост на stackru, и я по общему признанию n00b, когда дело доходит до Android. Учусь так же как и я:)