Android setText/R.string/values

Posted

技术标签:

【中文标题】Android setText/R.string/values【英文标题】:Android setText / R.string / values 【发布时间】:2012-07-17 04:34:30 【问题描述】:

我在使用格式和多个值的文本视图中设置文本时遇到问题。

holder.car.setText(R.string.mycar + lm.getCarName() + R.string.year + lm.getYear());

这是给我“2143545 Camero 2143213 1977”

我已经尝试了一些来自网络的其他“解决方案”

holder.car.setText(getString(R.string.mycar) + lm.getCarName() + getString(R.string.year) + lm.getYear());  << not work, getString undefine>>

我什至试过String.valueOf(R.string.mycar); getResources().getText(R.String.mycar),还是不行。

如果有人可以帮助我,那就太好了,谢谢

【问题讨论】:

“还是不行”是什么意思?你期待什么? 这是因为R.string.mycar 是一个引用资源的int。这不是实际的资源。 @user1417127 的答案看起来不错。它为您获取实际的字符串资源 使用 context.getResources.getString(R.string.xyx)。 【参考方案1】:

试试这个

holder.car.setText(getResources().getString(R.string.mycar));

【讨论】:

【参考方案2】:

我认为您正在尝试在字符串中使用参数。

试试这个:

<string name="mycar">Car: %1$s Year: %2$s</string>

String mycar = getString(R.string.mycar);
mycar = String.format(mycar, lm.getCarName(), lm.getYear());

你应该得到:

汽车:Camaro 年份:1977

【讨论】:

【参考方案3】:

如果您想将 textview 设置为 string.xml 文件中的一个字符串,

mytextview.setText(R.String.mycar);

如果你想用一些字符串或整数的组合来设置你的文本视图,(比第一种方式更好)

int number=5;

mytextview.setText(getResources().getString(R.String.mycar) + " " +number + " " + getResources().getString(R.String.mysecondcar));

【讨论】:

如何处理 android Studio 警告:“不要连接 setText 显示的文本。使用带有占位符的资源字符串”?【参考方案4】:

R.string.mycar 和 R.string.year 只是资源的 ID。因此,您会得到数字(ID 是数字)。

要从资源中获取字符串,您需要使用以下构造:

String myCar = getResources().getString(R.string.mycar);

现在 myCar 变量将您放入 strings.xml 文件中的字符串保存在 mycar 名称下。

getResources() 方法属于 Context。如果您在 Activity 之外运行代码,请使用上下文实例来获取字符串,如下所示:

String myCar = context.getResources().getString(R.string.mycar);

【讨论】:

【参考方案5】:

试试这个。如果你在课堂上获取字符串而不扩展Activity 使用你的Context

holder.car.setText(context.getResources().getString(R.string.mycar));

如果您要扩展 Activity

holder.car.setText(yourActivity.this.getResources().getString(R.string.mycar));

希望对你有所帮助..

【讨论】:

我们可以写getActivit() 来代替context 吗?有什么问题吗 @mehmet 这取决于您的要求。阅读document here【参考方案6】:

您必须先检索您的资源,然后调用方法 getString(int),而不是 getText,您是否已放置。

所以,应该是:

getResources().getString(R.String.mycar);

【讨论】:

【参考方案7】:

R 类包含指向你的资源的指针,所以你不能直接使用它们,使用 getResources().getString(),就像其他人说的那样。

【讨论】:

以上是关于Android setText/R.string/values的主要内容,如果未能解决你的问题,请参考以下文章

如何在每个导航选项卡的片段内创建 2 个片段

Android逆向系列文章— Android基础逆向

Android 逆向Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )

Android 逆向Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )

android 21 是啥版本

Android逆向-Android基础逆向(2-2)