gpt4 book ai didi

android - 在 Android 库项目中替换(或 "Override")字符串

转载 作者:IT老高 更新时间:2023-10-28 21:57:46 25 4
gpt4 key购买 nike

我一直在尝试制作一个 android 库项目,虽然构建过程运行良好,但在替换使用该库的项目中的资源时遇到了一些麻烦。

在我的图书馆里,我有:

  1. 一个 library_layout.xml 包含

    <TextView  
    android:id="@+id/str_my_string"
    android:layout_width="wrap_content"
    android: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">Placeholder</string>

在使用我拥有的库的项目中

  1. 一个资源 strings.xml 包含

    <string name="my_string">Actual string content</string>

我期望的行为是当我使用库运行项目时, TextView 显示实际字符串内容,但它实际上包含false

查看使用该库的应用程序,我确实看到了两个 R 文件,它们都有 R.string.my_string并且它们都等于相同的数值。

最佳答案

我有同样的安排,这对我来说符合预期。

该库具有对字符串资源的此引用的布局/类:

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

该库在其 strings.xml 中提供了一个默认值:

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

主应用在它的strings.xml中有这个值:

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

当我在主应用程序 strings.xml 中为该资源指定值时,我在应用程序运行时看到“客户端以来”,当我从主应用程序 strings.xml 中删除它时,我看到库中的值, “学生以来”。

根据我在此处的阅读,这似乎是预期的行为: http://developer.android.com/tools/sdk/eclipse-adt.html

以上链接的相关引用:

In the cases where a resource ID is defined in both the application and the library, the tools ensure that the resource declared in the application gets priority and that the resource in the library project is not compiled into the application .apk. This gives your application the flexibility to either use or redefines any resource behaviours or values that are defined in any library.

关于android - 在 Android 库项目中替换(或 "Override")字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4263259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com