Intereting Posts
Проводник Samsung My Files: выберите файл Intent Java / Android: java.lang.OutOfMemoryError при создании объекта JSON Площадь галереи в начале и конце Преобразование строки в int. Установите int в 0, если String имеет значение null Не удается запустить android / sdk / build-tools / 23.0.2 / aapt Сделать Android jenkins build fail, если тесты не пройдут Как найти владельца аккаунта для Android-приложения в консоли разработчика Google Play? Как взаимодействовать с BadgeProvider на телефонах Samsung, чтобы добавить счет к значку приложения? Android Как читать свойства BLE Чтение с возможностью записи уведомляемых характеристик GATT SwipeRefreshLayout без анимации при создании фрагментов Что такое onCreate (Bundle savedInstanceState) Получить местоположение изображения – Телефонная камера Как записывать аудио на веб-странице (iOS, Android, ПК / Mac) – без вспышки Расширение RelativeLayout и переопределение dispatchDraw () для создания масштабируемой ViewGroup Android: поддержка нескольких экранов

Заменить (или «переопределить») строку в проекте библиотеки Android

Я пытался создать проект андроидной библиотеки, и хотя процесс сборки работает нормально, у меня возникли проблемы с заменой ресурса в проекте, который использует библиотеку.

В моей библиотеке я:

  1. library_layout.xml содержащая

    <TextView
    андроид: идентификатор = "@ + идентификатор / str_my_string"
    андроид: layout_width = "wrap_content"
    андроид: layout_text = "wrap_content"
    >

  2. Java-файл, который вызывает

    ((TextView) this.findViewById (R.id.str_my_string)) SetText (R.string.my_string).

  3. Ресурс strings.xml содержащий

    <String name = "my_string"> Заполнитель </ string>

В проекте с использованием библиотеки у меня есть

  1. Ресурс strings.xml содержащий

    <String name = "my_string"> Фактическое содержимое строки </ string>

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

Если посмотреть в приложении, которое использует библиотеку, я вижу два файла R , и у обоих из них есть R.string.my_string и оба они равны одному и тому же числовому значению.

Solutions Collecting From Web of "Заменить (или «переопределить») строку в проекте библиотеки Android"

У меня такая же договоренность, и это работает для меня, как и ожидалось.

В библиотеке есть layout / class с этой ссылкой на строковые ресурсы:

 <TextView android:id="@+id/studentSinceLabel"> 

Библиотека предоставляет значение по умолчанию в файле strings.xml:

 <string name="studentSinceLabel">Student Since</string> 

Основное приложение имеет это значение в файле strings.xml:

 <string name="studentSinceLabel">Client Since</string> 

Когда я даю значение для этого ресурса в основных приложениях strings.xml, я вижу «Client Since», когда приложение запускается, когда я удаляю его из основных приложений strings.xml, я вижу значение из библиотеки «Student Since ».

Кажется, это ожидаемое поведение основано на моем чтении здесь: http://developer.android.com/tools/sdk/eclipse-adt.html

Соответствующая цитата из приведенной выше ссылки:

В тех случаях, когда идентификатор ресурса определен как в приложении, так и в библиотеке, инструменты гарантируют, что ресурс, объявленный в приложении, получает приоритет и что ресурс в проекте библиотеки не скомпилирован в приложение .apk. Это дает вашему приложению гибкость в использовании или переопределении любых типов поведения или значений ресурсов, определенных в любой библиотеке.