我正在使用计步器应用程序并且我想在共享首选项中保存步骤数据但是当我返回主页并重新启动应用程序时数据就会消失 以下是我的代码的一部分 我该如何解决这个问题?
public class MainActivity extends AppCompatActivity {
String finalstep="";
String valuestring1= null;
private static final String step = "STEP";
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf =new SimpleDateFormat("dd");
String strDate = sdf.format(c.getTime());
int date = Integer.parseInt(strDate);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void readData(){
settings = getSharedPreferences(step,MODE_WORLD_READABLE);
textSteps.setText(settings.getString(valuestring1, ""));
}
public void resetSteps(View v) {
String strDate1 = sdf.format(c.getTime());
int date1 = Integer.parseInt(strDate1);
if(date1==date) {
readData();
textSteps.setText(valuestring1);
}
else{
date=date1;
numSteps = 0;
textSteps.setText(String.valueOf(numSteps));
}
}
public void saveData(){
String s = String.valueOf(finalstep);
settings = getSharedPreferences(step,0);
settings.edit()
.putString(s, valuestring1).commit();
}
public void pressed (View v) {
if(v.getId()==R.id.exit) {
saveData();
}
}
}
答案 0 :(得分:0)
也许您正在调用 clear() SharedPreferences方法,或者您在onPause(),onStop()或onDestroy()方法中将SharedPreferences对象设置为 null 。这样做会使您丢失先前存储在您创建的SharedPreferences对象中的数据。
答案 1 :(得分:0)
您正在使用不同的键读取和编写共享首选项数据:
textSteps.setText(settings.getString(valuestring1, ""));
此处valuestring1
是关键。
settings.edit() .putString(s, valuestring1).commit();
此处s
是关键,valuestring1
是值。
您应该使用相同的密钥进行书写和阅读。
答案 2 :(得分:0)
您错过了readData();
metod中的onCreate()
,并错过了}
方法onCreate()
。