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”加载该值