我正在处理一个需要将字符串资源的值转换为常量的应用程序。请问如何实现?
该字符串位于
Application/res/values/strings.xml
并且该资源的名称为app_version。现在我想在另一个文件中将此应用版本获取为常量字符串。谢谢。
该字符串位于
Application/res/values/strings.xml
并且该资源的名称为app_version。现在我想在另一个文件中将此应用版本获取为常量字符串。谢谢。
context.getResources().getString(R.string.app_version)
,其中'context'是您的Activity或Application实例。如果您的问题确实是关于获取应用程序版本名称,则有更好的方法:String versionName = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
In Java: R.string.string_name
In XML:@string/string_name
R.string.app_version
或@string/app_version
是从strings.xml中获取的常量,它将始终表示您在XML文件中输入的值。
我也想做这件事,但经过思考,我不确定是否可行。我们试图在编译时设置一个在运行时才可用的值。
常量是在编译时设置的。此时可以使用资源ID,但是Android可以通过语言环境更改该值,因此字符串值直到运行时才可用。
我的解决方法是创建一个公共静态变量,并在创建时将其赋值为字符串值(如果它为空)。我可能应该只使用普通的实例变量,但这种方法有效。尽管如此,您仍然可以覆盖该值。
public class MyFragment
...
public static String SHOW_FOO;
...
public View onCreateView(...
if (SHOW_FOO == null) {
SHOW_FOO = getResources().getString(R.string.settings_foo_key);
}
....
@StringRes
public class AndroidClass{
...
@StringRes
private static final int[] TAB_TITLES = new int[]{R.string.tab1, R.string.tab2, R.string.tab_2};
private final Context mContext;
...
public CharSequence getString(int position) {
return mContext.getResources().getString(TAB_TITLES[position]);
}
}