#android
#Android
Вопрос:
Мое приложение позволяет пользователю выбирать экран по умолчанию при каждом запуске приложения, и для этого я использую SharedPreferences. Приложение предложит им выбрать экран при первом запуске после установки, и эта часть работает. Однако внутри приложения, где оно позволяет пользователю изменять экран по умолчанию, я использую тот же код, и он никогда не сохраняет изменения. Что мне нужно изменить, чтобы он правильно сохранялся?
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Choose a Default Screen");
builder.setItems(R.array.openChoices, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
SharedPreferences settings = getPreferences(0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("start", item);
editor.commit();
//Mech = 0, Eamp;M = 1
int choice = getPreferences(0).getInt("start", 3);
if(choice == 0){
Toast.makeText(setscreen.this, "Mechanics is now the default screen", Toast.LENGTH_SHORT).show();
Intent myIntent = new Intent(setscreen.this, physics.class);
startActivity(myIntent);
}
else if(choice == 1){
Toast.makeText(setscreen.this, "Eamp;M is now the default screen", Toast.LENGTH_SHORT).show();
Intent myIntent = new Intent(setscreen.this, physicsem.class);
startActivity(myIntent);
}
}
});
Комментарии:
1. Вы пробовали вызывать editor.apply()?
2. разве editor.commit() не должен делать то же самое?
3. Да, в документах говорится, что они делают то же самое, я просто сказал, что стоит попробовать :).
4. Да, я попробую. Может быть, commit() делает значение постоянным, поэтому оно не перезаписывается при последующем изменении?
Ответ №1:
Попробуйте использовать что-то подобное, чтобы получить ссылку на ваш объект общих настроек:
myPrefs = PreferenceManager.getDefaultSharedPreferences(ScreenSaverActivity.this);
Я не уверен, что то, как вы это сделали, не сработает, но я никогда не видел, чтобы это делалось таким образом, просто передавая 0.
Ответ №2:
И вы уверены, что звоните editor.commit();
каждый раз?