重启设备后的Android SharedPreferences

Bar*_*rey 6 android sharedpreferences

我的英语很不好因为我是俄罗斯人.:)

在我的应用程序中,我SharedPreferences用来存储我的值.数据存储在SharedPreferences应用程序运行时和退出之后.一切正常,直到我重新启动设备.重启后我无法使用SharedPreferences,应用程序不会从那里读取和写入数据.我使用该函数getPreferences(0)从应用程序数据文件夹中获取首选项.我也试过用getSharedPreferences(myPref, MODE_PRIVATE),但效果是一样的.仅保存一个解决方案 - 重启设备后的数据清理应用程序

    favoriteButton = (ImageView) findViewById(R.id.favorite_button);
    SharedPreferences favorite = getSharedPreferences("Favorites", MODE_PRIVATE);
    if(favorite.getString(""+Loader.currentVideo.getTitle()+"", "") == "true") {
        favoriteButton.setImageDrawable(getResources().getDrawable(R.drawable.fav_selected));
    } else {
        favoriteButton.setImageDrawable(getResources().getDrawable(R.drawable.fav_empty));
    }
    favoriteButton.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            SharedPreferences favorite = getSharedPreferences("Favorites", MODE_PRIVATE);
            SharedPreferences.Editor editor = favorite.edit();
            if(favorite.getString(""+Loader.currentVideo.getTitle()+"", "") == "true") {
                favoriteButton.setImageDrawable(getResources().getDrawable(R.drawable.fav_empty));
                Loader.favoriteVideos.remove(Loader.currentVideo);
                editor.remove(""+Loader.currentVideo.getTitle()+"");
            } else {
                favoriteButton.setImageDrawable(getResources().getDrawable(R.drawable.fav_selected));
                Loader.favoriteVideos.add(Loader.currentVideo);
                editor.putString(""+Loader.currentVideo.getTitle()+"", "true");
            }
            editor.commit();
        }
    });
Run Code Online (Sandbox Code Playgroud)

vip*_*psy 0

以下代码应该可以帮助您保存共享首选项。重要的部分是 edit.commit(); 如果这不起作用,那么您使用的手机可能有一些不同的行为,因为手机制造商可能已经修改了某些内容。

private static final String PREFERENCES = "Preferences";
static protected SharedPreferences getSharedPreferences( Context context ) {

    return context.getSharedPreferences( PREFERENCES, Context.MODE_PRIVATE);
}

public void setString(String setting, String value) {

    SharedPreferences settings = getSharedPreferences( getApplicationContext() );
    Editor edit = settings.edit();
    edit.putString(setting, value);
    edit.commit();
}
Run Code Online (Sandbox Code Playgroud)