如何加载以前的数据并使用按钮继续添加到其值(数字/int)



我是这里的新手,也是android工作室的新手,希望你能帮助我。

我正在尝试制作一个简单的计数器应用程序。

我有一个按钮可以将+1添加到我的文本视图(int(的值中,还有一个按钮将该值保存到共享首选项中,还有另一个按钮从共享首选项加载该值,它们都很好。当我第一次打开应用程序并在文本视图中添加一些值,然后单击保存并重新加载应用程序时,我遇到了问题。之后,当我点击";负载";按钮,它加载值很好,但当我点击";添加";按钮,它再次从0开始计数,并覆盖textview中加载的值,计数再次开始。。。我想做的是在重新加载应用程序后,从sp.加载的值开始继续计数

这是我的代码:

public class MainActivity extends AppCompatActivity   {
Button btnReset, btnPlus, btnSave, btnLoad;
TextView tv;
int counter;
String stringVal;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loadSavedPreferences();
initialiseUI();
}
private void savePreferences(int score) {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("score", score);
editor.commit();
}
private void loadSavedPreferences() {
try {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
int counter = sharedPreferences.getInt("score", 0); 
tv.setText(Integer.toString(counter)); 
}
catch (Exception a)
{
//Hevi
}
}
private void initialiseUI() {
loadSavedPreferences();
tv = (TextView) findViewById(R.id.textView1);
btnLoad = (Button) findViewById(R.id.btnLoad);
btnLoad.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loadSavedPreferences();
}
});
btnSave = (Button) findViewById(R.id.btnSave);
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
savePreferences(counter);
}
});
btnReset = (Button) findViewById(R.id.btnReset);
btnReset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
counter=0;
stringVal = Integer.toString(counter);
tv.setText(stringVal);
savePreferences(counter);
}
});
btnPlus = (Button) findViewById(R.id.btnPlus);
btnPlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
counter++;
stringVal = Integer.toString(counter);
tv.setText(stringVal);
}
});
}

此外,如果我能在启动时从sp加载保存的值,而不使用按钮,我会更好。我尝试过,但没有成功,所以我制作了按钮,它起作用了。但我更希望如果我能擦除按钮并不用它。

请帮助

解决方案

步骤1.从更改代码

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loadSavedPreferences();
initialiseUI();
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initialiseUI();
loadSavedPreferences();
}

步骤2.从更改代码

int counter = sharedPreferences.getInt("score", 0);

counter = sharedPreferences.getInt("score", 0);

最新更新