java - 如何在 Android Studio 中存储用户给出的计数和用户在活动中的选择
问题描述
我想制作一个基本的应用程序,让用户可以在其中添加诸如水等各种事物的跟踪器,然后他可以存储到目前为止他喝了多少杯。但是我希望它即使在应用程序关闭后也能保存信息。请提供解决方案。
这是我迄今为止尝试过的: -
public class MainActivity extends AppCompatActivity {
Button btnAddTracker;
//public static final String MY_PREFS_NAME = "MyCounter";
ImageView ivWater;
TextView tvWaterCount;
SharedPreferences pref;
SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pref = PreferenceManager.getDefaultSharedPreferences(this);
editor = pref.edit();
if(pref.getBoolean("WaterStatus",false)){
ivWater.setVisibility(View.VISIBLE);
tvWaterCount.setVisibility(View.VISIBLE);
tvWaterCount.setText(pref.getInt("waterCount",0));
}
btnAddTracker=findViewById(R.id.btnAddTracker);
ivWater=findViewById(R.id.ivWater);
tvWaterCount=findViewById(R.id.tvWaterCount);
btnAddTracker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(MainActivity.this,TrackerListActivity.class);
startActivity(intent);
}
});
editor.putInt("waterCount", 8);
editor.apply();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==RESULT_OK){
if(pref.getBoolean("WaterStatus",false)){
ivWater.setVisibility(View.VISIBLE);
tvWaterCount.setVisibility(View.VISIBLE);
tvWaterCount.setText(pref.getInt("waterCount",0));
}
}
}
}
public class TrackerListActivity extends AppCompatActivity {
Button btnAddWaterTracker;
ImageView ivReturn,ivWater;
TextView tvWaterStatus;
boolean WaterStatus;
SharedPreferences pref;
SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tracker_list);
ivReturn=findViewById(R.id.ivReturn);
btnAddWaterTracker=findViewById(R.id.btnAddWaterTracker);
ivWater=findViewById(R.id.ivWater);
tvWaterStatus=findViewById(R.id.tvWaterStatus);
pref = PreferenceManager.getDefaultSharedPreferences(this);
editor = pref.edit();
WaterStatus=pref.getBoolean("waterStatus",false);
ivReturn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent2=new Intent();
intent2.putExtra("waterStatus",WaterStatus);
setResult(RESULT_OK,intent2);
if(btnAddWaterTracker.getVisibility()==View.GONE) {
editor.putBoolean("waterStatus",true);
editor.apply();
}
TrackerListActivity.this.finish();
//Intent intent1=new Intent(TrackerListActivity.this,MainActivity.class);
//startActivity(intent1);
}
});
btnAddWaterTracker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
WaterStatus=true;
btnAddWaterTracker.setVisibility(View.GONE);
tvWaterStatus.setVisibility(View.VISIBLE);
//editor.putBoolean("waterStatus",true);
//editor.apply();
}
});
}
}
解决方案
本地保存信息的方法有很多种,可以使用 Json 或 XML 格式保存在文件中,也可以使用最近所有智能手机都支持的 SQLite。
不幸的是,您不会让任何人在此网站上为您编码,请查看此链接
推荐阅读
- javascript - Firestore - 仅获取大型同步集合中的更改文档
- c# - ASP.net 中的实体框架
- java - 从给定的 JSON 返回给定级别的最大嵌套级别和项目列表
- javascript - 如何每隔几分钟进行一次 axios 请求调用?
- javascript - NetSuite Map/Reduce 脚本引发 WF_EXEC_USAGE_LIMIT_EXCEEDED 异常
- excel - 是否可以限制行选择?
- swift - 使内置类型符合可编码
- python - 何时使用 TestClass 实例变量与 Pytest Fixtures
- python - 如何修补/模拟导入?
- csv - 将文本行数据文件转换为 Cloumn 数据文件