两个工作,很明显,如果你开始串联,你需要为了避免显示一个int得到的字符串。的setText(的getString(R.strings.whatever)或的setText(R.strings.whatever)?
问题:这是最“优雅”或“推荐”使用
谢谢
两个工作,很明显,如果你开始串联,你需要为了避免显示一个int得到的字符串。的setText(的getString(R.strings.whatever)或的setText(R.strings.whatever)?
问题:这是最“优雅”或“推荐”使用
谢谢
第二种方法是更优雅,因为在国内,TextView
(或任何View
-class)会做得到的工作?指定资源的字符串。
让组件做内部工作始终是首选。此外,它更短,更具可读性。
关于我谈到了内部:如果你看一下机器人会的源代码,你可以看到 - 方法的setText(int)
TextView
is implemented like this:
public final void setText(int resid) {
setText(getContext().getResources().getText(resid));
}
所以,它在内部使用Context
-class从资源ID获取字符串。现在,如果你看一下getText()
- 方法(也来自Context
-class),你可以看到它is implemented the same way:
public final String getString(int resId) {
return getResources().getString(resId);
}
所以对性能和可靠性的原因,这都没有区别。尽管如此,它更短,更具可读性。
那么,由于API提供了一个方法来传递资源字符串ID,所以更喜欢使用它是合乎逻辑的。你实际上可以检查setText(resourceid)的工作来查看底层,但setText(R.strings.whatever)是绝对推荐的。
,因为你需要获取资源方面,得到字符串后,您可以添加
yourEditText.setText(getResources().getString(R.string.mytext));
。
谢谢,完美! – 2012-04-12 09:35:22
@Shamrflow我用来自Android源代码的一些代码更新了答案,表明它以相同的方式实现。看一看。 – 2012-04-12 09:43:06
谢谢卢卡斯,甚至更好。我注意到在AlertBuilder中的setTitle和setMessage也是如此,还有一些其他的类。干杯! – 2012-04-12 13:19:09