2016-11-29 3 views
0

私はアンドロイドを学習しています。このプロジェクトでは、ユーザーのデータ(この場合はボタンの色の変更)を保存する必要があります。プログラム中に変更が発生する(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で動作するためには

+0

"paint"キーから読み取るコードは表示されません: 'settings.getBoolean(" paint "、false)'。あなたは保存していたものと同じものを読んでください。理想的には、 'final String paintKey =" paint "変数を作成します。 – foxanna

+0

私は行を追加しましたが、正常に機能しませんでした...最終的な文字列も – glassraven

+0

質問と実際の動作に応じて更新してください – foxanna

答えて

3

を強調し得ます後でデータ

paint = settings.getBoolean(paintKey, false); 
0

この行はSharedPreferencesから値を取得し、すぐに無視します。あなたは、後でそれを使用するために、変数に戻り値を保存する必要があります。

boolean paint = settings.getBoolean(paintKey,false); 

これは、同じ方法で使用できるローカル変数を作成します。他のメソッドで値を使用する必要がある場合は、代わりにフィールドを作成します。

関連する問題