Заменить (или «переопределить») строку в проекте библиотеки 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. Это дает вашему приложению гибкость в использовании или переопределении любых типов поведения или значений ресурсов, определенных в любой библиотеке.