我以下列方式从活动A加载SharedPreferences:
private void SavePreferences(String key, String value){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key, value);
editor.commit();
}
Run Code Online (Sandbox Code Playgroud)
在活动BI处想要加载SharedPreferences.以下是NullPointerException:
private void LoadPreferences(){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
data = sharedPreferences.getString("name", "08:00") ;
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试跟随,我得到此编译错误:"在范围中无法访问类型A的封闭实例"
private void LoadPreferences(){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(A.this);
data = sharedPreferences.getString("name", "08:00") ;
}
Run Code Online (Sandbox Code Playgroud)
我如何访问数据?
ρяσ*_*я K 44
使用getApplicationContext()而不是this在两个活动中:
在活动A中,SharedPreferences以下列方式:
private void SavePreferences(String key, String value){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key, value);
editor.commit();
Intent sd=new Intent(this,Secongtess.class);
startActivity(sd);
}
Run Code Online (Sandbox Code Playgroud)
在活动B中获取值为:
private void LoadPreferences(){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String data = sharedPreferences.getString("name", "08:00") ;
Toast.makeText(this,data, Toast.LENGTH_LONG).show();
}
Run Code Online (Sandbox Code Playgroud)
因为正如医生所说:
getDefaultSharedPreferences(Context context):
获取SharedPreferences实例,该实例指向给定上下文中首选项框架使用的默认文件.