Android: получите значение int предпочтительного ключа - PullRequest
0 голосов
/ 23 февраля 2012

Я хотел бы добавить OnSharedPreferenceChangeListener и выполнить переключение на основе ключа, который передается в

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
switch(obtainIntFromKey(key)){
    case R.string.settings_some_propery : doSomething(); break;
    ...
}

Как должен выглядеть метод obtainIntFromKey(key)?

Ответы [ 2 ]

0 голосов
/ 20 октября 2012

То, что вы хотите переключить, неверно.OnSharedPreferenceChangeListener будет передавать литерал разрешенного ключа.К сожалению, вы не можете использовать оператор switch () .. case с ключом, который он передает (если вы не используете Java 7 ).Поскольку ваш экран настроек имеет ограниченные параметры, и вы заранее знаете, какие они есть, вы проверяете те клавиши, на которые вы хотите реагировать при изменении:

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key){
    if(key.equals(getString(R.string.somestringresourceyoucareabout)) {
       //if you ask the user to enter an int value for this key then you need to cast it explicitly since preferences will store everything as text except for checkboxpreference
       int value = Integer.parseInt(prefs.getString(key, defaultValue));
    }
    else if(key.equals(getString(...)) {
       ...
    } 
}

Возможно, вы захотите изучить работу с Java7 с плагином eclipse ADT, если вы действительно хотите использовать switch () .. case. Честно говоря, если вы пишете оператор case для каждой из клавиш, к которой вы хотите обратиться, вы можете использовать nested, если ..иначе, если вместо этого возникнут условия и покончим с этим, вместо того, чтобы тратить время на использование Java 7 с ADT.

0 голосов
/ 23 февраля 2012

Вы можете сделать это в текущем методе:

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
    int value = sharedPreferences.getInt(key, 0);
    switch(value){
    case R.string.settings_some_propery : doSomething(); break;
        ...
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...