首页 > 解决方案 > 如何在 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();


            }
        });


    }
}

标签: javaandroid

解决方案


本地保存信息的方法有很多种,可以使用 Json 或 XML 格式保存在文件中,也可以使用最近所有智能手机都支持的 SQLite。

不幸的是,您不会让任何人在此网站上为您编码,请查看此链接


推荐阅读