[英]How to use the Shared Preferences to save the calculation data even after the App is killed or destroyed?
[英]How to save data even when the app is killed
我是应用程序开发的新手。 我刚刚开发了一个简单的应用程序,它在单击按钮时递增和递减计数并在TextView
显示结果。 我需要在应用程序被终止时保存计数,直到用户清除它才会丢失该值。 只有一个能帮我!
public class MainActivity extends AppCompatActivity {
boolean doubleBackToExitPressedOnce = false;
int count = 0;
Button inc, dec, clear;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inc = (Button) findViewById(R.id.inc);
dec = (Button) findViewById(R.id.dec);
clear = (Button) findViewById(R.id.clr);
textView = (TextView) findViewById(R.id.text);
inc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
count = count + 1;
display(count);
}
});
dec.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (count > 0) {
count = count - 1;
display(count);
}
}
});
clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
textView.setText(null);
count = 0;
textView.setText("0");
}
});
}
@Override
public void onBackPressed() {
if (doubleBackToExitPressedOnce) {
super.onBackPressed();
return;
}
this.doubleBackToExitPressedOnce = true;
Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
doubleBackToExitPressedOnce = false;
}
}, 2000);
}
public void display( int number){
TextView displaycount = (TextView) findViewById(R.id.text);
displaycount.setText("" + number);
}
}
您可以通过两种方式在android中保存数据
共享首选项共享首选项只能存储键值对
SQLite 数据库 SQLite 数据库 它是一个数据库
所以简单的方法是使用这样的共享首选项
public class MainActivity extends AppCompatActivity {
SharedPreferences sharedpreferences;
SharedPreferences.Editor editor;
public static final String mypreference = "mypref";
public static final String CountKey = "CountKey";
boolean doubleBackToExitPressedOnce = false;
int count = 0;
Button inc, dec, clear;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//INIT SHAREPERFERENCES
sharedpreferences = getSharedPreferences(mypreference,
Context.MODE_PRIVATE);
editor = sharedpreferences.edit();
//ENDING INIT
inc = (Button) findViewById(R.id.inc);
dec = (Button) findViewById(R.id.dec);
clear = (Button) findViewById(R.id.clr);
textView = (TextView) findViewById(R.id.text);
//CHECK IF THERE DATA EXIST
if (sharedpreferences.contains(CountKey)) {
int i = sharedpreferences.getInt(CountKey, 0);
display(i);
}
//END CHECKING
inc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
count = count + 1;
display(count);
}
});
dec.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (count > 0) {
count = count - 1;
display(count);
}
}
});
clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//START Saveing Data
editor.putInt(CountKey, number);
editor.commit();
//END SAVING
count = 0;
textView.setText("0");
}
});
}
@Override
public void onBackPressed() {
if (doubleBackToExitPressedOnce) {
super.onBackPressed();
return;
}
this.doubleBackToExitPressedOnce = true;
Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
doubleBackToExitPressedOnce = false;
}
}, 2000);
}
public void display( int number){
//START Saveing Data
editor.putInt(CountKey, number);
editor.commit();
//END SAVING
TextView displaycount = (TextView) findViewById(R.id.text);
displaycount.setText("" + number);
}
}
如果我的回答对你有帮助,请点赞
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.