Нажать XML файл из внутренней памяти

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

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

Ответ 1

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

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

Ответ 2

Из Android view API:

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

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

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

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

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

Ответ 3

Извините за мой плохой английский. Я думаю, что мы можем сделать, создавая представления динамически, используя теги XML. Но я не знаю, это хорошо для системы Android.