Intereting Posts
Прозрачная панель действий: пользовательская вкладка Исключение: обратные вызовы должны устанавливать границы родительских объектов в populateNodeForVirtualViewId () Перевернутый массив байтов предварительного просмотра камеры Ошибка «Отсутствие цели» на эмуляторе планшета Android в Eclipse Пользовательский интерфейс Robotium для приложения с навигационным ящиком Использование ContentResolver вместо ContentProviderClient в SyncAdapter Android FaceDetector.Face Euler углы – 0 все время Ошибка сборки Android в Crosswalk Увеличьте значение записи в базе данных android / sqlite Android: битмапы, загруженные из галереи, поворачиваются в ImageView Как запустить бесконечный цикл в Android без замораживания пользовательского интерфейса? Планирование процесса Android Определите, имеет ли устройство сенсорный экран или нет ArrayIndexOutOfBounds на листе полилинии в Android Android edit text, как начать печатать в левом верхнем углу?

Создание экземпляра внутреннего класса (Предпочтение) в 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 ... /> , но Оба не удалось.

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

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

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

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

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

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