要在应用程序项目的 strings.xml(在 res\values 中)引用字符串 foo,可以简单地使用
getString(R.string.foo)
getString 是 Context 的一个方法。
假设一个 Android 库的 strings.xml 中有一个字符串 foo。如何在库的方法中使用它?
已编辑:建议将 Context 的引用传递给库方法,以便可以使用 getString()。由于它是应用程序项目的上下文,因此存在潜在的冲突,可以说明如下:
假设:该库有一个字符串 foo,其值为“library foo”。一个应用项目有一个字符串 foo,其值为“app foo”
以下代码
Log.d("Debug", "App foo ID: " + R.string.foo);
Log.d("Debug", "App: foo value: " + getString(R.string.foo));
生成:
03-22 05:53:55.590: D/Debug(16719): App foo ID: 2131230723
03-22 05:53:55.590: D/Debug(16719): App foo value: app foo
在库方法中,以下代码
Log.d("Debug", "Library foo ID: " + R.string.foo);
Log.d("Debug", "Library foo value: " + context.getString(com.my.library.R.string.foo));
生成:
03-22 05:55:03.680: D/Debug(16719): Library foo ID: 2131230723
03-22 05:55:03.680: D/Debug(16719): Library foo value: app foo
上面显示了 ID 冲突因此错误的字符串值。