问题
I try to save the value of an int displayed in a TextView using SharedPreferences, it can't work at all. I did a simple small example of code :
public class MainActivity extends Activity {
Button search;
TextView tvRing;
int redRing;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final SharedPreferences prefs = getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE);
search = (Button) findViewById(R.id.radar);
tvRing = (TextView) findViewById(R.id.ring);
int someint = prefs.getInt("someint", 0);
tvRing.setText("Objects found : " + String.valueOf(someint));
search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addRing();
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("someint", redRing);
editor.commit();
}
});
}
public void addRing() {
redRing++;
}
}
Thank u all for yo help.
回答1:
I explained where I made changes
public class MainActivity extends Activity {
Button search;
TextView tvRing;
//Making sharedpreferences and integers global for ease of use
private SharedPreferences prefs;
private int redRing, someint;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
search = (Button) findViewById(R.id.radar);
tvRing = (TextView) findViewById(R.id.ring);
//Someint default value is 0 if not ever saved before
prefs = getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE);
someint = prefs.getInt("someint", 0);
tvRing.setText("Objects found : " + String.valueOf(someint));
search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Load the lates someint in onclick
someint = prefs.getInt("someint", 0);
//redring is the dummy integer to increment someint
redRing=someint+1;
//Save the incremented value
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("someint", redRing);
editor.commit();
//To show the latest number on the tv
lastNumber();
}
});
}
public void lastNumber() {
prefs = getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE);
someint = prefs.getInt("someint", 0);
tvRing.setText("Objects found : " + String.valueOf(someint));
}
}
回答2:
You should use
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("someint", redRing);
editor.apply();
and you are never using "someint", use
tvRing.setText(String.valueOf(someint));
来源:https://stackoverflow.com/questions/43849352/sharedpreferences-save-value-of-int-in-a-textview