SharedReference未通过Android应用程序持久化
我有一个SharedReference未通过Android应用程序持久化,android,sharedpreferences,android-sharedpreferences,Android,Sharedpreferences,Android Sharedpreferences,我有一个IntroActivity,其中我保存了一个从EditText保存的值,保存在一个共享的pref中 在我的SettingsActivity中,我尝试编辑该值,但即使我使用刚刚编辑的键调用共享首选项值,它仍然显示旧值。我做错了什么 这是活动介绍 public class IntroActivity extends Activity { String PREF = "MyPrefs"; Button mDone; EditText mTemperature;
IntroActivity
,其中我保存了一个从EditText保存的值,保存在一个共享的pref中
在我的SettingsActivity
中,我尝试编辑该值,但即使我使用刚刚编辑的键调用共享首选项值,它仍然显示旧值。我做错了什么
这是活动介绍
public class IntroActivity extends Activity {
String PREF = "MyPrefs";
Button mDone;
EditText mTemperature;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_intro);
mDone = (Button) findViewById(R.id.done);
mTemperature = (EditText) findViewById(R.id.temperature);
mDone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int temperature = Integer.parseInt(mTemperature.getText().toString());
SharedPreferences preferences = getSharedPreferences(PREF, Context.MODE_PRIVATE);
SharedPreferences.Editor edit = preferences.edit();
edit.putInt("sweater", temperature);
edit.commit();
Intent intent = new Intent(IntroActivity.this, MainActivity.class);
startActivity(intent);
}
});
}
}
public class SettingsActivity extends ActionBarActivity {
Button mDone;
EditText mTemperature;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
mDone = (Button) findViewById(R.id.done);
mTemperature = (EditText) findViewById(R.id.temperature);
mDone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences preferences = getSharedPreferences("sweater", 0);
SharedPreferences.Editor edit = preferences.edit();
int temp = preferences.getInt("sweater", 0);
int updateSweater = Integer.parseInt(mTemperature.getText().toString());
edit.remove("sweater");
edit.putInt("sweater", updateSweater);
boolean saved = edit.commit();
preferences.getInt("sweater", 0);
Toast.makeText(SettingsActivity.this, "Sweater Weather Updated", Toast.LENGTH_SHORT).show();
Map<String, ?> map = preferences.getAll();
for(Map.Entry<String,?> entry : map.entrySet()){
Log.d("map values",entry.getKey() + ": " +
entry.getValue().toString());
}
Intent intent = new Intent(SettingsActivity.this, MainActivity.class);
startActivity(intent);
}
});
}
}
以下是设置活动
public class IntroActivity extends Activity {
String PREF = "MyPrefs";
Button mDone;
EditText mTemperature;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_intro);
mDone = (Button) findViewById(R.id.done);
mTemperature = (EditText) findViewById(R.id.temperature);
mDone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int temperature = Integer.parseInt(mTemperature.getText().toString());
SharedPreferences preferences = getSharedPreferences(PREF, Context.MODE_PRIVATE);
SharedPreferences.Editor edit = preferences.edit();
edit.putInt("sweater", temperature);
edit.commit();
Intent intent = new Intent(IntroActivity.this, MainActivity.class);
startActivity(intent);
}
});
}
}
public class SettingsActivity extends ActionBarActivity {
Button mDone;
EditText mTemperature;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
mDone = (Button) findViewById(R.id.done);
mTemperature = (EditText) findViewById(R.id.temperature);
mDone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences preferences = getSharedPreferences("sweater", 0);
SharedPreferences.Editor edit = preferences.edit();
int temp = preferences.getInt("sweater", 0);
int updateSweater = Integer.parseInt(mTemperature.getText().toString());
edit.remove("sweater");
edit.putInt("sweater", updateSweater);
boolean saved = edit.commit();
preferences.getInt("sweater", 0);
Toast.makeText(SettingsActivity.this, "Sweater Weather Updated", Toast.LENGTH_SHORT).show();
Map<String, ?> map = preferences.getAll();
for(Map.Entry<String,?> entry : map.entrySet()){
Log.d("map values",entry.getKey() + ": " +
entry.getValue().toString());
}
Intent intent = new Intent(SettingsActivity.this, MainActivity.class);
startActivity(intent);
}
});
}
}
公共类设置活动扩展了ActionBarActivity{
按钮mDone;
编辑文本温度;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u设置);
mDone=(按钮)findViewById(R.id.done);
MTTemperature=(编辑文本)findViewById(R.id.temperature);
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
SharedReferences首选项=GetSharedReferences(“毛衣”,0);
SharedReferences.Editor edit=首选项.edit();
int temp=preferences.getInt(“毛衣”,0);
int updateSweater=Integer.parseInt(mTemperature.getText().toString());
编辑。删除(“毛衣”);
编辑.putInt(“毛衣”,updateSweater);
boolean saved=edit.commit();
首选项.getInt(“毛衣”,0);
Toast.makeText(SettingsActivity.this,“毛衣天气更新”,Toast.LENGTH_SHORT.show();
Map=preferences.getAll();
对于(Map.Entry:Map.entrySet()){
Log.d(“映射值”,entry.getKey()+”:“+
entry.getValue().toString());
}
意向意向=新意向(SettingsActivity.this、MainActivity.class);
星触觉(意向);
}
});
}
}
我尝试编辑该值,但即使在调用共享首选项时
值使用我刚刚编辑的键,它仍然显示旧值。什么
我做错了吗
因为两个活动中的SharedReferences
名称不同
在IntroActivity
中使用MyPrefs
和在SettingsActivity
中使用sweeter
在两个活动中使用相同的名称。要使其正常工作,请将设置活动中的毛衣
更改为MyPrefs
:
SharedPreferences preferences = getSharedPreferences("MyPrefs", 0);
我尝试编辑该值,但即使在调用共享首选项时
值使用我刚刚编辑的键,它仍然显示旧值。什么
我做错了吗
因为两个活动中的SharedReferences
名称不同
在IntroActivity
中使用MyPrefs
和在SettingsActivity
中使用sweeter
在两个活动中使用相同的名称。要使其正常工作,请将设置活动中的毛衣
更改为MyPrefs
:
SharedPreferences preferences = getSharedPreferences("MyPrefs", 0);
这两条线在两种活动中都是不同的
SharedPreferences preferences = getSharedPreferences(PREF, Context.MODE_PRIVATE);
及
对于此问题,您必须创建两个pref文件并从另一个文件读取值。这两行在两个活动中都不同
SharedPreferences preferences = getSharedPreferences(PREF, Context.MODE_PRIVATE);
及
对于此问题,您必须创建两个pref文件并从另一个文件读取值。我相信您的设置活动性,您需要使用
SharedReferences首选项=GetSharedReferences(“MyPrefs”,0)代码>
而不是SharedReferences preferences=getSharedReferences(“毛衣”,0)代码>
您正在将值存储在“毛衣”首选项中,并从“MyPrefs”加载它。我相信您的设置活动,您需要使用
SharedReferences首选项=GetSharedReferences(“MyPrefs”,0)代码>
而不是SharedReferences preferences=getSharedReferences(“毛衣”,0)代码>
您正在“毛衣”首选项中存储该值,并从“MyPrefs”加载该值