setText(getString(R.strings.whatever)或setText(R.strings.whatever)?

时间:2012-04-12 09:25:46

标签: android

两者都有效,显然如果你开始连接,你需要获取字符串以避免显示int。

问题:哪种“优雅”或“推荐”使用?

谢谢

3 个答案:

答案 0 :(得分:9)

第二种方法更优雅,因为在内部,TextView(或任何View - 类)将完成获取指定资源的String的工作。

让组件完成内部工作始终是首选。此外,它更短,更易读。


关于我所谈到的内幕:如果你看一下Androids的源代码,你可以看到setText(int) TextView的{​​{1}}方法:

public final void setText(int resid) {
  setText(getContext().getResources().getText(resid));
}

因此,它在内部使用Context - 类从resource-id获取字符串。现在,如果您查看getText() - 方法(也来自Context - 类),您可以看到它is implemented like this

public final String getString(int resId) {
  return getResources().getString(resId);
}

因此,出于性能或可靠性的原因,它没有任何区别。它仍然更短,更具可读性。

答案 1 :(得分:1)

好吧,因为API提供了传递资源字符串ID的方法,所以更喜欢使用它似乎是合乎逻辑的。您实际上可以检查setText(resourceid)的工作情况以查看引擎盖下方,但绝对建议使用setText(R.strings.whatever)。

答案 2 :(得分:0)

您可以添加

yourEditText.setText(getResources().getString(R.string.mytext));

因为在获取字符串后需要获取资源上下文。