Подтвердить что ты не робот

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

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

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

  • A library_layout.xml, содержащий

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

  • java файл, который вызывает

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

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

    < string name= "my_string" > Placeholder </string>

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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

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

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

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

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