Как использовать повторно используемый элемент / виджет GUI с ресурсами в Android - PullRequest
1 голос
/ 15 марта 2012

Я пытаюсь использовать datelider в моем проекте для Android, чтобы иметь комбинированный инструмент выбора даты и времени в моем графическом интерфейсе.

Авторы виджета предлагают включать java- и resource-sources прямо в мое приложение.

Первая попытка Копирование Java и ресурсов в основное приложение:

Результат: Виджет Java-классы не может скомпилировать , поскольку не удается разрешить идентификаторы ресурсов R.xxxx.

Причина: Классы виджетов реализованы в пакете "com.googlecode.android.widgets.DateSlider" и моем приложении. имеет другое пространство имен "my.namespace.myApp", так что идентификаторы ресурсов происходят из my.namespace.myApp.R.xxx.

Чтобы исправить , мне нужно было бы прикоснуться к каждому источнику Java виджета, чтобы импортировать my.namespace.myApp.

Есть ли способ иметь 2 набора ресурсов с различными пространствами имен, чтобы в основном приложении были my.namespace.myApp.R.xxx и com.googlecode.android.widgets.DateSlider.R?

2-я попытка поместить виджет java + ресурсы в отдельный jar / library:

результат: каждая вещь скомпилирована. но после запуска приложения я получаю runtimererror: среда выполнения не может разрешить идентификаторы ресурса виджета из jar / lib.

Примечание: я могу вызывать методы из банки, если они не нуждаются в ресурсах.

Итак, мой вопрос: как лучше всего использовать повторно используемый элемент графического интерфейса с ресурсами в Android?

Я использую Android 2.2.

Примечание: Android: как создавать повторно используемые компоненты? не помогает, потому что рассказывает, как создавать библиотечные проекты.

обновление 16.3.2012

Поскольку текущая версия 16/17-pre из eclipse adt-tools не поддерживает ресурсы в jar-файлах (на момент попытки 2), каков наилучший / простой способ их использования до тех пор, пока не появится поддержка для этого?

обновление 4.4.2012

с новыми инструментами R17 мне удалось использовать библиотеку project-with-resources, которая создает jar. Android-Lint помог мне выяснить, что нужно изменить в lib, чтобы сделать его пригодным для использования.

  • затмение-рабочее пространство

    • DateSliberLib
      • 1066 * ЦСИ *
      • Рез
      • ...
    • MyAppUsingLib
      • 1076 * ЦСИ *
      • Рез
      • ...

    с этим макетом MyAppUsingLib работает нормально


Однако я все еще не могу использовать только DateSliberlib.jar

  • затмение-рабочее пространство
    • MyAppUsingLib
      • 1097 * ЦСИ *
      • Рез
      • Lib
        • DateSliberLib.jar
      • ...

Этот параметр может быть скомпилирован, но приложение аварийно завершает работу, поскольку не может найти ресурсы библиотеки.

[обновление 2014-11-17]

6 месяцев назад я перешел с eclipse / ant-build на android-studio / gradle build, в котором были представлены * .aar-файлы, являющиеся jar-файлами с ресурсами android.

android-studio / gradle build может справляться с ресурсами в библиотеках.

1 Ответ

1 голос
/ 15 марта 2012

Есть ли способ иметь 2 набора ресурсов с разными пространствами имен, чтобы в главном приложении были my.namespace.myApp.R.xxx и com.googlecode.android.widgets.DateSlider.R?

Нет, извините.

Примечание. Android: как создавать повторно используемые компоненты? не помогает, потому что рассказывает, как создавать библиотечные проекты.

Однако, что - это правильный ответ. Загрузите полный проект из репозитория, импортируйте его в Eclipse и пометьте как проект библиотеки (Свойства> Android). Затем добавьте его как проект библиотеки в проект вашего приложения.

В конечном итоге (теперь это выглядит так, как будто это будет версия инструментов R18 или новее), инструменты должны поддерживать упаковку повторно используемых компонентов в JAR с ресурсами таким образом, чтобы вы могли добавить их в хост-проект и ресурсы будут смешаны автоматически. Сейчас это не вариант.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...