0

我有几个我的 PreferenceActivity 显示的 ListPreferences。从启动此活动的类中,我监听 SharedPreferences 上的任何更改并使用 getString(String key, String default) 来获取所选选项。

当我检索这个字符串时,我需要根据它是什么字符串来执行某些操作。但是,我将如何使用字符串。如果它是一个 int,我可以使用 switch case,但我该怎么处理字符串?

除了使用 if-else 和使用 String.equals 来比较两个字符串之外,还有其他方法吗?或者有没有办法检索选定的位置而不是选定的字符串?

4

3 回答 3

1

您可以将所有StringsHashMap连同相应int的值一起存储到 a 中,然后switchint.

于 2012-06-26T05:27:20.167 回答
1
    int k = 0;
    String i = "Namratha"; // replace the value from Shared Preference
    try {
        k = Integer.parseInt(i);
    } catch (Exception e) {
        Log.v("Exception**********", e.getMessage());
    }

看看值是否是字符串,它会抛出异常并去catch 块,这样你就可以从偏好中理解 calue 是 String .. 你是否相应地在 catch 块内填充..

否则,如果值是int然后在try block中做你的东西。

于 2012-06-26T05:46:44.153 回答
0

如果您必须有一个表示位置的 int,您可以使用 String 数组和 Arrays.binarySearch 方法

private static final String[] VALUES = { "a", "b", "c", "d", "e" };

public void processSelection( String selectedValue ) {  
    int pos = Arrays.binarySearch( VALUES, selectedValue );

    switch (pos) {
    case 0:
        ... 
    break;

    default:
        break;
    }
}
于 2012-06-26T05:54:10.243 回答