我的应用程序允许用户在每次应用启动时选择默认屏幕,我使用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, E&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, "E&M is now the default screen", Toast.LENGTH_SHORT).show();
Intent myIntent = new Intent(setscreen.this, physicsem.class);
startActivity(myIntent);
}
}
});
答案 0 :(得分:0)
尝试使用类似的内容来获取对共享首选项对象的引用:
myPrefs = PreferenceManager.getDefaultSharedPreferences(ScreenSaverActivity.this);
我不确定你完成它的方式是行不通的,但是我从来没有看到过这样做只是传递0。
答案 1 :(得分:0)
你确定每次都在呼叫editor.commit();
吗?