在一个TextView
Int的SharedPreferences保存价值我尽量节省使用SharedPreferences在TextView中显示一个int值,它不能在所有的工作。我做了一个简单的小例子代码:在一个TextView
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++;
}
}
谢谢大家的帮助。
我解释说,我所做的更改
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));
}
}
我试了一下,有保存价值,但问题是,如果我退出应用程序和搜索按钮再次点击,TextView的开始0再次点击,但之前,我可以看到的最后一个号码 –
检查了这一点。 –
我在lastNumber方法中删除了多余的最终sharedpreferences调用。抱歉。 –
您应该使用
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("someint", redRing);
editor.apply();
,你永远不会使用 “someint”,使用
tvRing.setText(String.valueOf(someint));
我试过但始终无法工作 –
您从不使用“someint” –
但是现在我有一个错误,应用程序崩溃 –
你的代码看起来很好,什么做你的意思是“无法工作”? –
我想保存TextView的值,因为int在用户单击按钮时增加,但如果我退出应用程序并再次返回,则TextView的值将返回默认值0.无法完全保存我的意思是 –
你在哪里使用someint? –