私はアンドロイドを学習しています。このプロジェクトでは、ユーザーのデータ(この場合はボタンの色の変更)を保存する必要があります。プログラム中に変更が発生する(onClick)が、アプリケーションを再起動しても何も起こりません - 変更が保存されていない(または読み込まれていません)誰かが私を助けることができますか?コード:Android:データストレージに関する問題(SharedPreferences)
final String paintKey = "paint";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonCreate();
preferences();
togglePlay();
}
public void preferences(){ //the issue in this method?
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
data = settings.getString("stage", "Indoors");
settings.getBoolean(paintKey,false);
String backGround = settings.getString("stage", "Indoors");
if (backGround.equals("Indoors")) {
Picasso.with(this).load(R.drawable.shocked_crowd).fit().centerCrop().into(stage);
}
if (backGround.equals("Street")) {
Picasso.with(this).load(R.drawable.coins).fit().centerCrop().into(stage);
}
}
public void changeColor(){
if(!paint) { //paint variable has global scope and it is set to false
c1.setBackgroundColor(Color.YELLOW);
paint = true;
}else{
c1.setBackgroundColor(Color.BLUE);
paint = false;
}
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("paint", paint);
editor.commit();
}
EDIT:のonClickメソッド:
ます。public void onClickの(ビューV){
if(v==color){
changeColor();
}
EDIT:これは、私は今それを持っているかである:
public void preferences(){
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
data = settings.getString("stage", "Indoors");
final String paintKey = "paint";
settings.getBoolean(paintKey,false);
間違っていますか?私が設定するのではなく、エディタを置けば私はあなたがそれを読むにはグローバルキー
final String paintKey = "paint"
書き込むにはブール値情報SharedPreferences
使用
SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(this).edit();
editor.putBoolean(paintKey, paint).commit();
を必要とする赤はSharedPreferences
で動作するためには
"paint"キーから読み取るコードは表示されません: 'settings.getBoolean(" paint "、false)'。あなたは保存していたものと同じものを読んでください。理想的には、 'final String paintKey =" paint "変数を作成します。 – foxanna
私は行を追加しましたが、正常に機能しませんでした...最終的な文字列も – glassraven
質問と実際の動作に応じて更新してください – foxanna