繁体   English   中英

SharedPreferences 可以通过但不保存

[英]SharedPreferences can pass but doesn't save

我可以将带有 SharedPreferences 的数据从第一个活动传递到第二个活动。 有用。 但是,当在模拟器中关闭并打开项目时,它不会保存它。

(第二个活动中还有其他代码,但我不想混淆你的想法。我认为问题与它们无关,因为我没有收到任何错误。不过,你想要它们,我可以立即分享。)

第一个活动:

private float difference;
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_myMain);
        sharedPreferences=getSharedPreferences("MyData", Context.MODE_PRIVATE);
        editor = sharedPreferences.edit();
}

@Override
    public void onClick(View v) {
if (v.getId() == button1.getId()){
            editor.putFloat("float1", difference);
            editor.commit();}
 if(v.getId() == set.getId()){
            editor.putFloat("float2", difference);
            editor.commit();}
 if(v.getId() == sleepB.getId()){
            editor.putFloat("float3", difference);
            editor.commit();}
}

第二个活动:

Float intValue, intValue2, intValue3;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_daily);
    sharedPreferences=getSharedPreferences("MyData", Context.MODE_PRIVATE);
    editor = sharedPreferences.edit();
}

private Object[] createItem(long timestamp) {
       data = new ArrayList<>();
        s= getIntent().getStringExtra("date");
        if(s != null) {
        formatter = new SimpleDateFormat("yyyy/MM/dd");
        try {
            date2 = formatter.parse(s);
            timeStampDate = new Timestamp((date2.getTime()));
            myTime = timeStampDate.getTime();
            editor.putLong("long1",myTime);
            editor.commit();
        } catch (ParseException e) {
            e.printStackTrace();
        }
        otherMyTime = sharedPreferences.getLong("long1",0);
        intValue = sharedPreferences.getFloat("float1", (float) 0.0);
        intValue2 = sharedPreferences.getFloat("float2", (float)0.0);
        intValue3 = sharedPreferences.getFloat("float3",(float) 0.0);

        item = new Object[COLUMN_NAMES.length];
        item[0] = otherMyTime;
        item[1] = intValue;
        item[2] = intValue2;
        item[3] = intValue3;
        data.add(item);
    }

        item = new Object[COLUMN_NAMES.length];
        item[0] = timestamp;
        item[1] = 0;
        item[2] = 0;
        item[3] = 0;
        data.add(item);

        cursor.addAll(data);
    return item; }

如果要在共享首选项中保存浮点值,则需要像这样添加。

SharedPreferences prefs = getSharedPreferences(PREFERENCE_NAME, 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putFloat("floatname", 1.5f);
editor.commit();

然后从共享首选项中检索浮点数是这样的

float someFloat = prefs.getFloat("floatname", 0.0f);

在浮点值的末尾添加 f

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM