2016-06-15 8 views
1

Ich möchte einen Wert ("Coins") speichern, und ich verwende die SharedPreferences Option (Ich möchte, dass die Anzahl der Münzen gespeichert wird, auch nach dem Schließen der App). Ich benutzte 2 Funktionen, eine, um die Münzenzahl einzufügen (ändern), und eine andere, um es zu bekommen. Außerdem habe ich einen Knopf gemacht, der nach dem Anklicken die Anzahl der Münzen ändert. Das Problem ist, dass die Schaltfläche es nicht ändert. Irgendeine Hilfe? Danke im Voraus.Probleme mit der Änderung SharedPreferences Wert

package com.myfirstapplication.owner.appversion1; 

import android.app.Activity; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class MainActivity extends AppCompatActivity { 
    Button btnPlay; 

public void changeCoinsNumber(String key, int value) { 
    SharedPreferences sharedPreferences = getSharedPreferences("PlayerInfo", Activity.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putInt(key, value); 
    editor.commit(); 
} 

public int loadCoinsNumber(String key) { 
    SharedPreferences sharedPreferences = getSharedPreferences("PlayerInfo", Activity.MODE_PRIVATE); 
    int savedValue = sharedPreferences.getInt(key, 0); 
    return savedValue; 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    changeCoinsNumber("CoinsNumber", 5); 

    TextView txt = (TextView) findViewById(R.id.spText); 
    txt.setText(""+loadCoinsNumber("CoinsNumber")); // displaying the number of coins 

    btnPlay = (Button) findViewById(R.id.btnPlay); 
    btnPlay.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      changeCoinsNumber("CoinsNumber", 111); 
     } 
    }); 
} 

}

+0

All die Dinge gut aussehen. Haben Sie nach dem Drücken der Taste die freigegebene Einstellung überprüft, um zu wissen, dass sich der Wert nicht geändert hat? –

+0

Gute Idee, obwohl Neo mir geholfen hat. Vielen Dank! – Tom

+0

@GauravJindal, wissen Sie, ob es die Informationen nach dem Schließen der App behalten wird? – Tom

Antwort

0

Sie müssen es wieder angezeigt werden, wenn Sie die Münzen Wert als pro Sie Code ändern. Ich aktualisiere einen kleinen Teil deines Codes.

final TextView txt = (TextView) findViewById(R.id.spText);//Make txt final 
    txt.setText(""+loadCoinsNumber("CoinsNumber")); // displaying the number of coins 

    btnPlay = (Button) findViewById(R.id.btnPlay); 
    btnPlay.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      changeCoinsNumber("CoinsNumber", 111); 
      txt.setText(""+loadCoinsNumber("CoinsNumber"));//Adding this line to update 
     } 
    }); 

Hoffe, es wird Ihnen helfen :)

+0

Danke @Neo! Hilft mir wieder :) Danke! (Ich hätte Upvote, aber ich habe nicht genug Ansehen ...) – Tom

+0

Was ist das "letzte" in der TextView für? Was ist der Unterschied zwischen "öffentlich" am Anfang des Codes zu setzen? – Tom

+0

Ja, Sie können es auch tun, aber wenn es keine Variable auf Klassenebene ist, müssen Sie es endgültig machen, um auf eine innere Klasse zuzugreifen. Funktioniert es für Sie? – Neo