Я расширяю ListPreference
, чтобы добавить функциональность, чтобы изменить резюме предпочтения, когда он выбран изменениями записи. Пока я только расширил класс, предоставил конструкторы и задал несколько вариантов. Когда я запускаю деятельность, которая ссылается на этот класс в XML, то приложение падает с InflateException
:InflateException, расширяющий android.preference.ListPreference
E/AndroidRuntime(1542): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.grooveshark.android.radio/com.grooveshark.android.radio.activity.SettingsActivity}: android.view.InflateException: Binary XML file line #88: Error inflating class HighQualityPreference
E/AndroidRuntime(1542): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1768)
E/AndroidRuntime(1542): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784)
E/AndroidRuntime(1542): at android.app.ActivityThread.access$1500(ActivityThread.java:123)
E/AndroidRuntime(1542): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939)
E/AndroidRuntime(1542): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(1542): at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime(1542): at android.app.ActivityThread.main(ActivityThread.java:3835)
E/AndroidRuntime(1542): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(1542): at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime(1542): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
E/AndroidRuntime(1542): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
E/AndroidRuntime(1542): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(1542): Caused by: android.view.InflateException: Binary XML file line #88: Error inflating class HighQualityPreference
Вот Java:
public class HighQualityPreference extends ListPreference
{
public HighQualityPreference(Context context, AttributeSet attrs)
{
super(context, attrs);
// TODO Auto-generated constructor stub
setEntries(R.array.high_quality_options);
setEntryValues(R.array.high_quality_option_values);
setSummary("Six squirrels while on a WiFi connection");
}
public HighQualityPreference(Context context)
{
super(context);
}
}
Вот XML:
<HighQualityPreference android:key="@string/prefs_high_quality_option"
android:persistent="true" />
Как вам могу видеть, все, что я сделал, - это расширение класса. Чтобы добавить функциональность в ListPreference
, мне нужно сделать больше, чем продлить его? Смысл, мне нужно переопределить любые другие функции или вызвать другие функции? Нужно ли устанавливать представление содержимого XML? Я хочу использовать оригинальный XML, я просто хочу обновить резюме, когда выбранный объект изменится.
Пожалуйста, покажите ваш XML. Я подозреваю, что вы ссылаетесь на этот «HighQualityPreference» без полностью квалифицированного имени пакета, но вам нужно включить его, или инфлятор не сможет его найти. –
@AleksG Я добавил XML выше. Нет, я не включил полное имя компонента. – skyler
Попробуйте добавить полностью готовый пакет для компонента, то есть ' ' –