У меня есть несколько прядильщиков, где я установил значения, четыре из них. Я хочу, чтобы они сохраняли текущие настройки между запусками. Когда вы выбираете значение в счетчике, оно не должно сохранять это значение до тех пор, пока не будет нажата кнопка updateSettings. Как мне это сделать?Как пользоваться sharedPreferences здесь?
здесь некоторый код, в OnCreate я делаю блесны со значениями по умолчанию:
mBaudSpinner = (Spinner) findViewById(R.id.bannerBaudSpinner);
ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(
this, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mBaudSpinner.setAdapter(adapter);
String[] tempArray = SlickUSB2Serial.BAUD_RATES;
for (int i = 0; i < tempArray.length; i++) {
adapter.add(tempArray[i]);
}
mBaudSpinner.setSelection(SlickUSB2Serial.BaudRate.BAUD_9600.ordinal());
mDataSpinner = (Spinner) findViewById(R.id.bannerDataSpinner);
adapter = new ArrayAdapter<CharSequence>(this,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mDataSpinner.setAdapter(adapter);
tempArray = SlickUSB2Serial.DATA_BITS;
for (int i = 0; i < tempArray.length; i++) {
adapter.add(tempArray[i]);
}
mDataSpinner
.setSelection(SlickUSB2Serial.DataBits.DATA_8_BIT.ordinal());
mParitySpinner = (Spinner) findViewById(R.id.bannerParitySpinner);
adapter = new ArrayAdapter<CharSequence>(this,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mParitySpinner.setAdapter(adapter);
tempArray = SlickUSB2Serial.PARITY_OPTIONS;
for (int i = 0; i < tempArray.length; i++) {
adapter.add(tempArray[i]);
}
mParitySpinner.setSelection(SlickUSB2Serial.ParityOption.PARITY_NONE
.ordinal());
mStopSpinner = (Spinner) findViewById(R.id.bannerStopSpinner);
adapter = new ArrayAdapter<CharSequence>(this,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mStopSpinner.setAdapter(adapter);
tempArray = SlickUSB2Serial.STOP_BITS;
for (int i = 0; i < tempArray.length; i++) {
adapter.add(tempArray[i]);
}
mStopSpinner
.setSelection(SlickUSB2Serial.StopBits.STOP_1_BIT.ordinal());
Если я нажимаю updateSettings, этот код выполняется:
else if (v == mUpdateSettings) {
if (mSelectedAdapter == null) {
return;
}
mSelectedAdapter.setCommSettings(BaudRate.values()[mBaudSpinner
.getSelectedItemPosition()], DataBits.values()[mDataSpinner
.getSelectedItemPosition()],
ParityOption.values()[mParitySpinner
.getSelectedItemPosition()],
StopBits.values()[mStopSpinner.getSelectedItemPosition()]);
}
Я пытаюсь использовать настройки, как это например, для одного счетчика, это на правильном пути?
SharedPreferences prefs;
prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor prefEditor = prefs.edit();
prefEditor.putString("savedValue",mBaudSpinner.getSelectedItem().toString());
prefEditor.commit();
String username = prefs.getString("savedValue", String.valueOf(SlickUSB2Serial.BaudRate.BAUD_9600.ordinal()));
mBaudSpinner.setSelection(Integer.parseInt(username));
Что вы делаете, я делаю то sharedPrefs вещи глобальные, так что он может быть использован как в OnCreate и в кнопку щелчка слушателя? Затем измените строки, которые устанавливают значения по умолчанию для блесен, чтобы что-то вроде этого, как пример:
String username = prefs.getString("savedValue", String.valueOf(SlickUSB2Serial.BaudRate.BAUD_9600.ordinal()));
mBaudSpinner.setSelection(Integer.parseInt(username));
Затем положить другие вещи о сохранении значения в кнопке слушателя? Я пытаюсь это, но состояние не сохраняет и всегда по умолчанию использует неправильное значение. Это то, что я делаю правильно?
EDIT
Эти строки, кажется, не установлено право на значение по умолчанию, почему это?
prefs = PreferenceManager.getDefaultSharedPreferences(this);
String username = prefs.getString("savedValue", Integer.toString(SlickUSB2Serial.BaudRate.BAUD_9600.ordinal()));
mBaudSpinner.setSelection(Integer.parseInt(username));
Если ваш класс является активным, попробуйте использовать 'getPreferences' или' getSharedPreferences' вместо 'PreferenceManager.getDefaultSharedPreferences (this);' –
Я исправил эту ошибку, ваш путь также дал значение nullpointer. Видимо, вы не можете использовать контекст во всем мире? он вызывает nullpointer, поэтому я просто настроил его дальше по коду. Теперь моя проблема остается в том, что выпадающее меню никогда не устанавливается правильно – Paul
спасибо bruno, я посмотрю разницу. Это деятельность – Paul