Раздуть файл XML из внутренней памяти - PullRequest
3 голосов
/ 20 ноября 2011

Я скопировал файл XML из /assets в папку данных своего приложения (data/data/package.name/files/).Я делаю это, потому что пользователь сможет изменить много данных, и я хочу сохранить эти данные во внутренней памяти и затем загрузить их снова, когда они перезапускают приложение.Все это работает хорошо, с помощью Root Browser я вижу, что файл XML правильно скопирован в каталог данных.

Теперь мне нужно накачать этот файл XML, используя LayoutInflater.Как бы я получить доступ к этому файлу?С XmlResourceParser или XmlPullParser?

Ответы [ 2 ]

2 голосов
/ 20 ноября 2011

Вы не можете надуть этот файл, используя LayoutInflater.Во-первых, вы можете только раздувать макет ресурсов , а не произвольные файлы.Во-вторых, основываясь на описании в первом абзаце, это не файл макета, во-первых.

Если вы хотите проанализировать произвольный XML, используйте DOM, SAX или XmlPullParser.

1 голос
/ 20 апреля 2012

Из API представления Android :

в настоящее время невозможно использовать LayoutInflater с XmlPullParser поверх простого XML-файла во время выполнения.

Решением может быть предварительная обработка файлов XML.Вы должны сжать XML-файл так же, как это делает Android SDK во время сборки:

просмотр инфляции в значительной степени зависит от предварительной обработки XML-файлов, которая выполняется во время сборки

Полагаю, вам придется вызвать XmlPullParser.setInput для загрузки предварительно обработанного XML, а затем передать XmlPullParser в View.inflate.Я надеюсь, что можно делать такие вещи даже для контента, которого нет в APK.

Мне очень интересно любое решение, которое вы можете найти.Пожалуйста, дайте мне знать, если вы найдете или создадите прототип!Это станет решающим шагом на пути создания архитектуры плагинов для моего приложения с открытым исходным кодом.

...