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

StackOverflow https://stackoverflow.com/questions/4263259

Вопрос

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

В моей библиотеке у меня есть:

  1. А. library_layout.xml содержащий

    u003CTextView
    Android: id = "@ + id / str_my_string"
    Android: layout_width = "wrap_content"
    Android: layout_text = "wrap_content"
    >

  2. Файл Java, который звонит

    ((TextView) this.findviewbyId (r id.id.str_my_string)). Settext (r.string.my_string);

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

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

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

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

    u003Cstring name="my_string">Фактический строковый контентu003C/string>

Ожидание, которое я ожидаю, что при запуске проекта используя библиотеку, отображает вид текста Фактический строковый контент, но это на самом деле содержит ложный.

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

Это было полезно?

Решение

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

Библиотека имеет макет / класс с этой ссылкой на строковые ресурсы:

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

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

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

Основное приложение имеет это значение в его строках .xml:

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

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

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

Соответствующие цитаты из ссылки выше:

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top