添加所有必要的导入。
public class MainActivity extends AppCompatActivity {
SharedPreferences preferences;
SharedPreferences.Editor editor;
public int i;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
preferences = getSharedPreferences("MyPrefs", MODE_PRIVATE);
editor = preferences.edit();
在第一次启动消息时#34;第一次启动"出现,但不应出现在下一次,而是应该出现保存在sharedPreferences中的迭代器i。
try{
i = preferences.getInt("iterator", 0);
Toast.makeText(getApplicationContext(), i, Toast.LENGTH_SHORT).show();
}catch(Exception e){
Toast.makeText(MainActivity.this, "First time boot", Toast.LENGTH_SHORT).show();
}
final TextView date = (TextView) (findViewById(R.id.textView));
final Calendar c = Calendar.getInstance();
date.setText(DateFormat.getDateFormat(this).format(c.getTime()));
final Button mainBtn = (Button) findViewById(R.id.mainBtn);
final Button exit = (Button) findViewById(R.id.exit);
mainBtn.setText("Clock In");
mainBtn.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
if(mainBtn.getText() == "Clock In"){
mainBtn.setText("Clock Out");
}else{mainBtn.setText("Clock In");}
String s = new SimpleDateFormat("yyyy: MM: dd HH: mm: ss").format(Calendar.getInstance().getTime());
我的想法是,点击按钮后,时间戳会保存到sharedPreferences文件中,以后可以访问。
editor.putString("Time "+ i, s);
i++;
editor.putInt("iterator", i);
}
});
我刚刚添加了这个,因此当您单击退出按钮时,将保存放在sharedPreferences文件中的所有内容。 (早期的editor.commit()行在mainBtn onClickListener中。)
exit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editor.commit();
finish();
}
});
}
问题是,在退出应用程序并重新启动它时,应用程序不会检索存储的数据,而应该保存在sharedPreferences文件中,而只是说#34;第一次启动&#34 ;每次..我对编程非常陌生,并试图以多种方式克服这个问题,只是为了达到同样的问题。救命啊!
答案 0 :(得分:0)
据我所知preferences.getInt(“iterator”,0);如果“迭代器”不存在,则不会抛出异常。它将返回0. 0是默认值。我会将您的代码更改为更像:
int iterator = preferences.getInt("iterator", -1);
if (iterator == -1)
Toast.makeText(this, "First time boot", Toast.LENGTH_SHORT).show();
如果你看一下你的异常,我猜你的getInt(“Iterator”,0)调用传递一个int而不是一个字符串后,你的Toast中出现了问题。
此外,我不会在整个应用程序中打开编辑器。我通常会写一个像
这样的函数void savePreference(String key, String value) {
SharedPreferences prefs = context.getSharedPreferences(PREFERENCES_NAME, 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(key, value);
editor.commit();
}