Intereting Posts
Метод get (String) не определен для типа String error при добавлении кодов в класс фильтра адаптера в android PhoneGap / JQuery Mobile – нарушение стиля страницы, когда клавиатура видна Отображение наполовину содержимого панели инструментов Android Сохранить Android SQLite Как передать идентификатор электронной почты, который будет синхронизирован, чтобы создать календарь событий в android? Как ограничить доступ к API конечных точек Google App Engine только для моих приложений Android? Нужно ли мне предоставлять изображения с разным размером, если я получаю его с помощью Picasso или Glide или Volley? Layout_width и layout_height не применяются к edittext из темы Обновление приложения для Android-разработчика Android Custom ListView повторяет выбор фона Throwing OutOfMemoryError "pthread_create (стек 1040 КБ) не удалось: повторите попытку" при выполнении асинхронных сообщений с использованием Volley Очистить краску с холста без очистки фонового изображения – Android Остановить приемник местоположения в Android Как обрабатывать потерянный пароль KeyStore в Android? Восстановить состояние после завершения процесса

Создание экземпляра внутреннего класса (Предпочтение) в XML-файле

Когда вы хотите получить доступ к настраиваемому представлению в файле layout.xml , у вас есть два варианта:

  1. Представление – это собственный класс. Затем вы делаете <package.name.MyView android:layout_width= ... />
  2. Представление – это внутренний класс: <view class="package.name.OuterClass$MyView" android:layout_width= ... />

Теперь я хочу сделать то же самое внутри <PreferenceScreen> . Первый способ работает хорошо, но я хотел бы поместить все пользовательские классы Preference в свою PreferenceActivity. Я попробовал <Preference class="package.name.OuterClass$MyPreference" ... /> (также с '.' Вместо '$'), а также <package.name.OuterClass.MyPreference ... /> , но Оба не удалось.

У кого-нибудь есть идея?

Когда речь идет о раздувании Views , LayoutInflater ищет LayoutInflater «вид» -> «класс»:

 View createViewFromTag(View parent, String name, AttributeSet attrs) { if (name.equals("view")) { name = attrs.getAttributeValue(null, "class"); } ... 

Предпочтение PreferenceInflater не подходит, так что это относится к «классу».

Он использует отражение в методе createItem() и, вероятно, поэтому первый случай работает на вас.