6

Both work, obviously if you start concatenating you'll need get string in order to avoid displaying an int.

Question: which is the most 'elegant' or 'recommended' to use?

Thank you

4

3 回答 3

10

第二种方法更优雅,因为在内部,TextView(或其他View类)将完成获取指定资源的字符串的工作。

让组件做内部工作总是首选。此外,它更短且更具可读性。


关于我谈到的内部结构:如果你看一下 Android 的源代码,你可以看到setText(int)-method 的TextView 实现是这样的:

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

因此,它在内部使用Context-class 从资源 ID 中获取字符串。现在,如果您查看getText()-method(也来自Context-class),您会发现它的实现方式相同

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

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

于 2012-04-12T09:28:17.847 回答
0

好吧,由于 API 提供了一种传递资源字符串 ID 的方法,因此更喜欢使用它似乎是合乎逻辑的。您实际上可以检查 setText(resourceid) 的工作情况以了解幕后情况,但绝对推荐使用 setText(R.strings.whatever)。

于 2012-04-12T09:32:27.527 回答
0

你可以加

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

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

于 2016-04-19T14:15:50.510 回答