Я создал элемент управления со списком с помощью edittext и spinner. Я пытаюсь передать атрибут android: prompt на обтекатель , что означает, что мне нужно поймать его в конструкторе, который передает мой атрибут и устанавливает его на счетчике. Я не могу понять, как получить значение подсказки. Пытаюсь,Как получить атрибут XML для настраиваемого элемента управления
int[] ra = { android.R.attr.prompt };
TypedArray ta = context.getTheme().obtainStyledAttributes(ra);
int id = ta.getResourceId(0, 0);
я вернусь 0, что означает, что он не нашел атрибут. Я также сделал ta.count(), который вернул 0. Так что я ничего не получаю.
Мой XML просто определяет значение android: prompt.
Благодаря
Это, но вы не должны забывать определять новое пространство имен xml для своих пользовательских настроек в макете xml: xmlns: app = "http://schemas.android.com/apk/res/package.name". И используйте a.getString (R.stylable.option_name), чтобы получить эту опцию. – MrSnowflake
Большое спасибо! a.getString (R.styleable.option_name) не работает. Я получаю исключение индекса за пределами. Предполагаю, что индекс должен быть индексом внутри массива, а не идентификатором ресурса. Использование android: prompt также работает, android.R.attr.prompt. Моя проблема заключалась в неправильной сигнатуре метода getStyleAttributes. Я думал, что должен использовать тему. Эти сигнатуры работают: TypedArray a = context.obtainStyledAttributes (attrs, new int [] {android.R.attr.prompt}); или context.obtainStyledAttributes (attrs, new int [] {android.R.attr.prompt}, 0, 0); Затем a.getResourceId (0, 0); – David