6

私の英語は非常に悪いので、私はロシア人です。:)

私のアプリケーションではSharedPreferences、値を保存するために使用します。データはSharedPreferences、アプリケーションの実行中および終了後に に保存されます。デバイスを再起動するまで、すべて正常に動作します。再起動後は使用できずSharedPreferences、アプリケーションはそこからデータを読み書きしません。関数を使用してgetPreferences(0)、アプリケーション データ フォルダーから設定を取得します。も使用してみましたgetSharedPreferences(myPref, MODE_PRIVATE)が、効果は同じです。デバイスの再起動後のデータクリーニングアプリケーション - 1 つのソリューションのみを保存します。

    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();
        }
    });
4

3 に答える 3

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();
}
于 2012-08-02T11:55:36.757 に答える