0

PreferenceActivity が表示する ListPreferences がいくつかあります。このアクティビティを起動するクラスから、SharedPreferences の変更をリッスンし、getString(String key, String default) を使用して選択したオプションを取得します。

この文字列を取得するとき、その文字列に応じて特定の操作を実行する必要があります。しかし、文字列をどのように使用しますか。int の場合は、switch case を使用できますが、String はどうすればよいでしょうか?

if-else と String.equals を使用して 2 つの文字列を比較する以外に方法はありますか? または、選択した文字列の代わりに選択した位置を取得する方法はありますか?

4

3 に答える 3

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());
    }

値がStringであるかどうかを確認すると、例外がスローされ、 catchブロックに移動して、設定からの計算がStringであることが理解できるようになります。それに応じてcatchブロック内に詰め込みますか。

それ以外の場合、値がintの場合は、 tryブロック内で作業を行います。

于 2012-06-26T05:46:44.153 に答える
1

Stringすべてのを に格納しHashMap、対応するintswitchとともにint.

于 2012-06-26T05:27:20.167 に答える
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 に答える