Java 强制停止活动时SharedReference丢失

Java 强制停止活动时SharedReference丢失,java,android,sharedpreferences,Java,Android,Sharedpreferences,我正在开发一个步骤计数器应用程序,我想在SharedReference中保存步骤数据,但当我返回主页并重新启动应用程序时,数据就消失了 下面是我代码的一部分 我怎样才能解决这个问题 public class MainActivity extends AppCompatActivity { String finalstep=""; String valuestring1= null; private static final String step = "STEP";

我正在开发一个步骤计数器应用程序,我想在SharedReference中保存步骤数据,但当我返回主页并重新启动应用程序时,数据就消失了 下面是我代码的一部分 我怎样才能解决这个问题

public class MainActivity extends AppCompatActivity {
    String finalstep="";
    String valuestring1= null;

    private static final String step = "STEP";

    Calendar c = Calendar.getInstance();
    SimpleDateFormat sdf =new SimpleDateFormat("dd");
    String strDate = sdf.format(c.getTime());
    int date = Integer.parseInt(strDate);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }

    public void readData(){
        settings = getSharedPreferences(step,MODE_WORLD_READABLE);
        textSteps.setText(settings.getString(valuestring1, ""));
    }

    public void resetSteps(View v) {
        String strDate1 = sdf.format(c.getTime());
        int date1 = Integer.parseInt(strDate1);
        if(date1==date) {
            readData();
            textSteps.setText(valuestring1);
        }
        else{
            date=date1;
            numSteps = 0;
            textSteps.setText(String.valueOf(numSteps));
        }
    }
    public void saveData(){
        String s = String.valueOf(finalstep);
        settings = getSharedPreferences(step,0);
        settings.edit()
                .putString(s, valuestring1).commit();
    }

    public void pressed (View v) {
        if(v.getId()==R.id.exit) {
  saveData();
        }
    }
}

可能您正在调用clear()SharedReferences方法,或者正在onPause()、onStop()或onDestroy()方法中将SharedReferences对象设置为null。这样做会丢失以前存储在您创建的SharedReferences对象中的数据。

您正在使用不同的键读取和写入共享首选项数据:

这里的
valuestring1
是关键

此处,
s
是键,
valuestring1
是值


您应该使用相同的键进行写入和读取。

您错过了
readData()
onCreate()
metod中,在
onCreate()
方法的末尾遗漏了
}

你不想改善这个问题,是吗D
textSteps.setText(settings.getString(valuestring1, ""));
settings.edit()
            .putString(s, valuestring1).commit();