我是Android的新手,想要了解另一个时刻。我有一个strings.xml,我在activity.xml中使用了这个值。如何在交换机块中使用JAva代码中的这个值?
private void gotoActivity(CharSequence text) {
switch (text.toString()) {
case getString(R.string.title_activity_first):
break;
case RADIO_BUTTON_SECCOND:
break;
}
}
不编译" cos"需要常量表达"。但strings.xml的主要好处 - 在一个地方是字符串常量。
帮助PLZ。
答案 0 :(得分:1)
不幸的是,你不能在switch-case中使用资源字符串。你有两个选择。选择任何人......
在您的活动中使用static final String
。
示例:初始化字符串
public static final String TITLE_ACTIVITY_FIRST = "activity_title";
public static final String RADIO_BUTTON_SECCOND = "radio_button_second";
然后您可以在切换案例中使用TITLE_ACTIVITY_FIRST
。喜欢,
switch(text.toString()){
case TITLE_ACTIVITY_FIRST: break;
case RADIO_BUTTON_SECOND: break;
}
不会显示错误!
使用if-else。然后,您可以使用资源字符串。
示例:强>
if(text.toString().equals(getString(R.string.title_activity_first))){
//your code in case of 1st condition
}else if(text.toString().equals(getString(R.string.title_activity_second))){
//your code in case of 2nd condition
}
第二个可能看起来很笨拙。但是你不必太多改变你的代码。而第一个可能看起来很方便,你可以稍后修改。希望它有所帮助!
答案 1 :(得分:0)
你不能使用getString(R.string.title_activity_first)
,因为它从应用程序包的默认字符串表返回一个本地化的字符串。所以根据语言环境结果会有所不同,因此它不会是常量。你甚至不能使用getString()方法获取一个特定的本地字符串.Better使用一个静态的最终String字段。请参考here