强制停止活动时共享偏好丢失

时间:2017-08-22 08:05:33

标签: java android sharedpreferences

我正在使用计步器应用程序并且我想在共享首选项中保存步骤数据但是当我返回主页并重新启动应用程序时数据就会消失 以下是我的代码的一部分 我该如何解决这个问题?

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();
        }
    }
}

3 个答案:

答案 0 :(得分:0)

也许您正在调用 clear() SharedPreferences方法,或者您在onPause(),onStop()或onDestroy()方法中将SharedPreferences对象设置为 null 。这样做会使您丢失先前存储在您创建的SharedPreferences对象中的数据。

答案 1 :(得分:0)

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

textSteps.setText(settings.getString(valuestring1, ""));

此处valuestring1是关键。

settings.edit()
            .putString(s, valuestring1).commit();

此处s是关键,valuestring1是值。

您应该使用相同的密钥进行书写和阅读。

答案 2 :(得分:0)

您错过了readData(); metod中的onCreate(),并错过了}方法onCreate()