- Java code
- String msg =R.string.menu_title;
-
获取menu_title的String值,但发现这样写报错,原因R.string.menu_title是int类型的,这个比较奇怪
为什么下边的这个可以获取?
Java code
TextView TV =new TextView(this);
TV.setText(R.string.menu_about_content);
- 分析原因:
-
-
R类只是保存资源的ID,是整形数字。
除了你写的方法可以设置外还可以通过如下代码直接获取
getResources().getString(R.string.menu_about_content)
-
getResources().getString(R.string.menu_about_content)
Context 还提供了一种简单的快捷方式,就是你可以直接调用getString(resId)。其实它内部也还是调用的 getResources().getString()
因此如果你是直接在 Activity 里获取字符串资源,可以直接调用父类的 getString(resId) 方法。在其它情境,需要先获取 Context 对象,再调用 Context 对象的 getString() 方法。
类似的方法还有getDrawable、getColor、getLayout 等等。它们没有提供快捷访问方式,需要先 getResources() ,再调用这些方法。
另外值得注意的是,这些方法必须保证是在应用被启动之后才能调用的。或者说,必须保证有一个窗体被被创建出来了。因此,不适合将 getResources() 一系列的方法写在静态代码块里面。或者作为程序的静态变量初始值。