Java SharedReference可以通过,但不能通过';救不了

Java SharedReference可以通过,但不能通过';救不了,java,android,sharedpreferences,Java,Android,Sharedpreferences,我可以将带有SharedReference的数据从第一个活动传递到第二个活动。它起作用了。但是,当我关闭并打开模拟器中的项目时,它不会保存它 (第二个活动中还有其他代码,但我不想让你们感到困惑。我认为问题与它们无关,因为我没有发现任何错误。尽管如此,你们想要它们,我可以立即分享。) 第一项活动: private float difference; protected void onCreate(Bundle savedInstanceState) { super.onCreate

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

(第二个活动中还有其他代码,但我不想让你们感到困惑。我认为问题与它们无关,因为我没有发现任何错误。尽管如此,你们想要它们,我可以立即分享。)

第一项活动:

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; }
第二项活动:

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; }
Float intValue、intValue2、intValue3;
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_每日);
SharedReferences=GetSharedReferences(“MyData”,Context.MODE\u PRIVATE);
editor=SharedReferences.edit();
}
私有对象[]createItem(长时间戳){
数据=新的ArrayList();
s=getIntent().getStringExtra(“日期”);
如果(s!=null){
格式化程序=新的SimpleDataFormat(“yyyy/MM/dd”);
试一试{
date2=格式化程序.parse;
timeStampDate=新的时间戳((date2.getTime());
myTime=timeStampDate.getTime();
编辑:putLong(“long1”,myTime);
commit();
}捕获(解析异常){
e、 printStackTrace();
}
otherMyTime=SharedReferences.getLong(“long1”,0);
intValue=SharedReferences.getFloat(“float1”,(float)0.0);
intValue2=SharedReferences.getFloat(“float2”,(float)0.0);
intValue3=SharedReferences.getFloat(“float3”,(float)0.0);
item=新对象[列名称.length];
项目[0]=其他我的时间;
第[1]项=intValue;
第[2]项=intValue2;
第[3]项=intValue3;
数据。添加(项目);
}
item=新对象[列名称.length];
项目[0]=时间戳;
第[1]项=0;
第[2]项=0;
第[3]项=0;
数据。添加(项目);
cursor.addAll(数据);
返回项;}

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

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

也许您在其他地方使用了SharedReference,但您不能仅在活动之间传递数据。您可以使用putExtra,float)我使用的是Intent.putExtra,但它不保存数据。我需要拯救他们@Kiarashtorkian您是否真的触发onClick来保存首选项?添加日志和调试以查找问题,以确保预期的事件流正在发生。不要只是放弃。我猜你可能会在重新启动应用程序时替换这些值。但很难从片段中分辨出来。如果您同时发布这两个活动,可能会更好。@KiarashTorkian可能是对的,因为第二个item对象(我添加了check edit please)每次都给出当前月份。例如,我现在看到2017年10月1日至2017年10月31日。首先,我添加了所有带有sharedPrefences的文件,它通过并运行没有问题。其次,当我打开和关闭项目时,第二个item对象工作,因为s==null,所以不能在其他时间工作。只是工作时间戳。您对此有何看法?SecondActivityfloat somevalue=prefs.getFloat(“floatname”,0.0f)中intValue的数据类型是什么;这段代码对您不起作用?