Можно ли надувать 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 ответ

Решение
  1. Возможно ли использование вида из одного приложения в другое?

Не напрямую.

  1. Можно ли использовать RemoteViews для этой цели?

Да.

Если да, то как?

Предположительно с помощью кода, который у вас уже есть. Эта пара примеров проектов демонстрирует процесс.

  1. Почему я получаю ошибку

Так как EditText не один из немногих виджетов, поддерживаемыхRemoteViews,

что это значит?

Это означает, что у вас есть три варианта:

  1. Ограничьте себя виджетами, поддерживаемыми RemoteViews

  2. Не пытайтесь делиться пользовательским интерфейсом между приложениями

  3. Реализуйте свой собственный RemoteViewsсистема

В конце концов, RemoteViews это просто структура данных, которая описывает, как построить пользовательский интерфейс и как отправить обратно очень грубые события (например, клики, через PendingIntent). Ничто, кроме времени и опыта, не мешает вам создавать свои собственные Parcelable структура данных, которая описывает, как построить более богатый пользовательский интерфейс, чем RemoteViews поддерживает.

Другие вопросы по тегам