Java 如何使用来自不同活动的SharedReference?
我搜索了如何在Android中使用SharedReferences,遇到了一个问题 我将一些Java 如何使用来自不同活动的SharedReference?,java,android,sharedpreferences,Java,Android,Sharedpreferences,我搜索了如何在Android中使用SharedReferences,遇到了一个问题 我将一些字符串保存在SP中,并以以下方式将数据保存在Main Activity中: 在OnCrete函数中,我定义: sp = getApplicationContext().getSharedPreferences("MyPref", 0); // 0 - for private mode SharedPreferences.Editor editor = sp.edit(); 然后我用以下
字符串
保存在SP
中,并以以下方式将数据保存在Main Activity
中:
在OnCrete
函数中,我定义:
sp = getApplicationContext().getSharedPreferences("MyPref", 0); // 0 - for private mode
SharedPreferences.Editor editor = sp.edit();
然后我用以下方式将字符串保存到SharedReferences:
mail = edmail.getText().toString();
pass = edpass.getText().toString();
color = edcolor.getText().toString();
phone = edphone.getText().toString();
SharedPreferences.Editor editor = sp.edit();
if (mail.equals("") || pass.equals("") || color.equals("") || phone.equals("")||img.getDrawable() == null
)
Toast.makeText(getApplicationContext(), "you have to fill all the fields", Toast.LENGTH_SHORT).show();
else {
editor.putString("mail", mail);
editor.putString("phone", phone);
editor.putString("color", color);
editor.putString("password", pass);
editor.apply();
Toast.makeText(getApplicationContext(), "Signed up", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this, Main2Activity.class);
intent.putExtra("img",bitmap);
startActivity(intent);
}
在第二个活动中,我尝试检索数据:
@Override
public void onClick(View v) {
Intent intent=getIntent();
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("img");
imgv.setImageBitmap(bitmap);
LoadPreferences();
//txtmail.setText(value);
}
private void LoadPreferences(){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String data = sharedPreferences.getString("mail", null) ;
Toast.makeText(this,data, Toast.LENGTH_LONG).show();
}
toast表示默认值,而不是实际值 您将数据保存在
MyPref
文件中,与PreferenceManager.getDefaultSharedReferences(getApplicationContext())相比,该文件是一个不同的共享首选项文件代码>
所以使用
SharedPreferences sharedPreferences = getSharedPreferences("MyPref", 0);
而不是
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
getSharedReferences(“MyPref”,0)如果不存在,code>将始终创建一个新文件,而GetDefaultSharedReferences
将为您提供一个pref文件,该文件可供整个应用程序使用,同时提及您在MyPref
文件中保存的数据,该文件与其他共享首选项文件不同PreferenceManager.getDefaultSharedReferences(getApplicationContext())代码>
所以使用
SharedPreferences sharedPreferences = getSharedPreferences("MyPref", 0);
而不是
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
getSharedReferences(“MyPref”,0)如果不存在,code>将始终创建一个新文件,而GetDefaultSharedReferences
为您提供一个pref文件,可供整个应用程序使用,同时提及任何名称更改加载声明:
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
致:
更改加载声明:
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
致:
快速附加:OP应该使用Context.MODE\u PRIVATE
而不仅仅是0
。虽然0
是MODE PRIVATE的值,但是谢谢,所以两者都是一样的,尽管我同意Context.MODE\u PRIVATE
更具可读性,更具意义这只是推荐的方式,所以我推荐它:pI很高兴我能帮忙,快乐编码!快速附加:OP应该使用Context.MODE\u PRIVATE
而不仅仅是0
。虽然0
是MODE PRIVATE的值,但是谢谢,所以两者都是一样的,尽管我同意Context.MODE\u PRIVATE
更具可读性,更具意义这只是推荐的方式,所以我推荐它:pI很高兴我能帮忙,快乐编码!这是帕夫尼特答案的副本。这是帕夫尼特答案的副本。