Intereting Posts
Графика TileProvider искажается при более высоких уровнях масштабирования Как сделать линию с закругленными (гладкими) углами с AndroidPlot Как обрабатывать клики с элементами для просмотра ресайклеров с помощью RxJava Метод add (int, Fragment, String) в типе FragmentTransaction не применим для аргументов (int, Fragment, String) Ошибка приложения при запуске, вызванная NPE в android.content.Context.getString Android, как сделать анимированный setSelection () для listfragment? Должен ли я использовать Фрагменты для получения LoaderManager? Реализация MultiDex приводит к компиляции так долго, и, наконец, ошибка в области кучи Как заставить просмотр перерисовываться непосредственно перед выполнением следующей строки кода ActionBarSherlock – тип android.support.v4.app.Fragment не может быть разрешен. Это косвенно ссылается на требуемые файлы .class RecyclerView LayoutManager различает количество строк в разных строках Google Map Android API v2 не может отображать карту в приложении магазина воспроизведения Соответствие между координатами ImageView и растровыми пикселями – Android JDK 7 с Android SDK R13 в Windows 7 Поддержка азербайджанского языка Android 2.2?

Пользовательский XML-парсер Android не разрешает пространство имен android

Я хотел бы получить правильный способ разбора пользовательских тегов Android с помощью XmlResourceParser. Я использую Eclipse 3.6 с подключаемым модулем android, и мне хотелось бы, чтобы некоторые атрибуты, такие как name были расширены с помощью полной строки из strings.xml .

Вот index.xml который анализируется в папке res/xml/ .

 <?xml version="1.0" encoding="utf-8"?> <Index xmlns:android="http://schemas.android.com/apk/res/android"> <Sheet shortName="o_2sq" android:name="@string/o_2sq" instructions="" /> </Index> 

Вот файл strings.xml в папке res/values/

 <?xml version="1.0" encoding="utf-8"?> <resources> <string name="o_2sq">Organize two squares</string> </resources> 

И фрагмент кода, который анализирует первый index.xml с помощью XmlResourceParser:

 String name = xpp.getAttributeValue(null, "android:name"); String shortName = xpp.getAttributeValue(null, "shortName"); 

Имя переменной содержит null , но shortName содержит "o_2sq" . Я также пробовал следующее без успеха:

 String name = xpp.getAttributeValue("android", "name"); 

Каков правильный способ написания предложения, чтобы имя переменной содержало "Organize two squares" ?

Solutions Collecting From Web of "Пользовательский XML-парсер Android не разрешает пространство имен android"

Попробуй это:

 String name = xpp.getAttributeValue("http://schemas.android.com/apk/res/android", "name"); 

Лучшее решение, которое я нашел, чтобы преодолеть эту проблему.

 String s = xpp.getAttributeValue("http://schemas.android.com/apk/res/android", "name"); String name = null; if(s != null && s.length() > 1 && s.charAt(0) == '@') { int id = Integer.parseInt(s.substring(1)); name = getString(id); } else { name = ""; } 
 final String NAMESPACE_ANDROID = "http://schemas.android.com/apk/res/android"; final int VALUE_NOT_SET = -1; int resId = parser.getAttributeResourceValue(NAMESPACE_ANDROID, "name", VALUE_NOT_SET); String value = null; if (VALUE_NOT_SET != resId) { value = context.getString(resId); } 

Я думаю, что приведенный выше код может вам помочь.