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