gpt4 book ai didi

java - Activity 和服务之间的 SharedPreference

转载 作者:行者123 更新时间:2023-11-29 06:52:08 25 4
gpt4 key购买 nike

我想在 Android 上使用 TYPE_STEP_COUNTER 制作计步器。如您所知,当您重新启动设备时,TYPE_STEP_COUNTER 将重置。所以我应该保留这些步骤。我决定使用 SharedPreference 来保留它。项目结构如下: enter image description here

在MainActivity.java中,

    protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text_step = (TextView) findViewById(R.id.main_text_step);
delayHandler = new Handler(this);
Toolbar toolbar=(Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

SharedPreferences.Editor editor=getSharedPreferences("DateStep",MODE_PRIVATE).edit();
}

但是,当我将数据放入 StepService.java 时,它失败了。//StepService.java

editor.putInt("step",StepDetector.CURRENT_STEP); editor.putString("date",current_Date);

它说无法解析符号编辑器。你能给我一些建议,我应该如何保存 StepService.java 中的数据?

我在service.java中声明时,显示如下: enter image description here

最佳答案

您需要在 onCreate 之外声明您的 editor 以使其对其他方法可见,因为当前声明将其范围限制在 onCreate 内method ,简而言之就是一个Local引用变量

  SharedPreferences.Editor editor; 
// ^^^^^^^^^^ declare it outside

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text_step = (TextView) findViewById(R.id.main_text_step);
delayHandler = new Handler(this);
Toolbar toolbar=(Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

editor=getSharedPreferences("DateStep",MODE_PRIVATE).edit();
// initialize editor
}

要在其他类中使用 editor,然后如上所示声明并初始化它,同时使用相同的文件名 DateStep 将数据保存在该文件中。

在服务类中,覆盖 onCreateservice 中并应用相同的方法

SharedPreferences.Editor editor; 
// ^^^^^^^^^^ declare it outside

@Override
public void onCreate() {
super.onCreate();
editor=getSharedPreferences("DateStep",MODE_PRIVATE).edit();
// initialize editor
}

关于java - Activity 和服务之间的 SharedPreference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44569588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com