Можно ли надувать RemoteViews в другом приложении?
Я занимаюсь разработкой двух приложений для Android, одно из которых является baseApp, а другое служит плагином. Цель состоит в том, чтобы расширить функциональность baseApp, когда установлен соответствующий плагин. PluginApp будет содержать файлы макетов XML, которые будут содержать "new_layouts", которые мне нужно отобразить в baseApp. Есть ли способ передать new_layout в baseApp из pluginApp через Inter Process Communication или что-то подобное?
Я попробовал следующий подход, но безуспешно я обернул файл макета из pluginApp как объект 'RemoteViews' и передал его в baseApp, но когда я надуваю его в baseApp, я получаю сообщение об ошибке:
android.view.InflateException: Binary XML file line #9: Class not allowed to be inflated android.widget.EditText
Примечание: 'new_layout' содержит EditText среди других элементов с EditText, являющимся первым дочерним элементом.
Я никогда раньше не использовал RemoteViews и пока не понимаю их цели.
Пожалуйста, наставьте меня на 1. Возможно ли использование вида из одного приложения в другое? 2. Можно ли использовать RemoteView для этой цели? Если да, то как? 3. Почему я получаю сообщение об ошибке и что это означает?
1 ответ
- Возможно ли использование вида из одного приложения в другое?
Не напрямую.
- Можно ли использовать RemoteViews для этой цели?
Да.
Если да, то как?
Предположительно с помощью кода, который у вас уже есть. Эта пара примеров проектов демонстрирует процесс.
- Почему я получаю ошибку
Так как EditText
не один из немногих виджетов, поддерживаемыхRemoteViews
,
что это значит?
Это означает, что у вас есть три варианта:
Ограничьте себя виджетами, поддерживаемыми
RemoteViews
Не пытайтесь делиться пользовательским интерфейсом между приложениями
Реализуйте свой собственный
RemoteViews
система
В конце концов, RemoteViews
это просто структура данных, которая описывает, как построить пользовательский интерфейс и как отправить обратно очень грубые события (например, клики, через PendingIntent
). Ничто, кроме времени и опыта, не мешает вам создавать свои собственные Parcelable
структура данных, которая описывает, как построить более богатый пользовательский интерфейс, чем RemoteViews
поддерживает.