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
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
第二种方法更优雅,因为在内部,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);
}
因此,出于性能或可靠性的原因,它没有任何区别。不过,它更短且更具可读性。
好吧,由于 API 提供了一种传递资源字符串 ID 的方法,因此更喜欢使用它似乎是合乎逻辑的。您实际上可以检查 setText(resourceid) 的工作情况以了解幕后情况,但绝对推荐使用 setText(R.strings.whatever)。
你可以加
yourEditText.setText(getResources().getString(R.string.mytext));
因为您需要在获取字符串后获取资源上下文。