R.string.ID 返回的是int 而不是 string(layout, color,drawable and so on)

    技术2025-12-02  8

    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) TextView TV = new TextView( this ); TV.setText(R.string.menu_about_content); // 为什么? 因为TextView.setText支持资源索引方式赋值。(int resId) getResources().getString(R.string.menu_about_content) Context 还提供了一种简单的快捷方式,就是你可以直接调用getString(resId)。其实它内部也还是调用的 getResources().getString() 因此如果你是直接在 Activity 里获取字符串资源,可以直接调用父类的 getString(resId) 方法。在其它情境,需要先获取 Context 对象,再调用 Context 对象的 getString() 方法。 类似的方法还有getDrawable、getColor、getLayout 等等。它们没有提供快捷访问方式,需要先 getResources() ,再调用这些方法。 另外值得注意的是,这些方法必须保证是在应用被启动之后才能调用的。或者说,必须保证有一个窗 体被被创建出来了。因此,不适合将 getResources() 一系列的方法写在静态代码块里面。或者作为程序的静态变量初始值。
    最新回复(0)