我的PreferenceActivity显示了几个ListPreferences。从启动此活动的类中,我监听SharedPreferences上的任何更改并使用getString(String key,String default)来获取所选选项。
当我检索这个String时,我需要执行某些操作,具体取决于它是什么字符串。但是,我将如何使用String。如果它是一个int,我可以使用switch case但是我怎么处理Strings?
除了使用if-else和使用String.equals比较2个字符串之外还有其他方法吗? 或者有没有办法检索选定的位置而不是选定的字符串?
答案 0 :(得分:1)
您可以将所有String
存储到HashMap
以及相应的int
值,然后在switch
上设置int
个案例。< / p>
答案 1 :(得分: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());
}
查看值是字符串它会抛出异常并转到捕获阻止以便您可以 理解来自首选项的calue是String ..你相应地在catch块内填充..
否则,如果值为 int ,则在尝试阻止中执行您的操作。
答案 2 :(得分: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;
}
}