Android按来自strings.xml的值切换

时间:2017-02-05 16:07:36

标签: java android xml

我是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。

2 个答案:

答案 0 :(得分:1)

不幸的是,你不能在switch-case中使用资源字符串。你有两个选择。选择任何人......

  1. 在您的活动中使用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;
       }
    

    不会显示错误!

  2. 使用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 }

  3. 第二个可能看起来很笨拙。但是你不必太多改变你的代码。而第一个可能看起来很方便,你可以稍后修改。希望它有所帮助!

答案 1 :(得分:0)

你不能使用getString(R.string.title_activity_first),因为它从应用程序包的默认字符串表返回一个本地化的字符串。所以根据语言环境结果会有所不同,因此它不会是常量。你甚至不能使用getString()方法获取一个特定的本地字符串.Better使用一个静态的最终String字段。请参考here