我正在尝试使用共享首选项保存数据,并使用TextView在另一个活动中检索该数据。 这里的问题是我能够成功存储数据但无法从另一个活动中检索数据。我还需要在代码中更改以从其他活动中检索数据。
EditText ed1,ed2,ed3;
按钮b1;
public static final String MyPREFERENCES =" MyPrefs" ;
public static final String Name =" nameKey&#34 ;;
public static final String Phone =" phoneKey&#34 ;;
public static final String Email =" emailKey";
SharedPreferences共享偏好;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ed1=(EditText)findViewById(R.id.editText);
ed2=(EditText)findViewById(R.id.editText2);
ed3=(EditText)findViewById(R.id.editText3);
b1=(Button)findViewById(R.id.button);
sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String n = ed1.getText().toString();
String ph = ed2.getText().toString();
String e = ed3.getText().toString();
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString(Name, n);
editor.putString(Phone, ph);
editor.putString(Email, e);
editor.commit();
Toast.makeText(MainActivity.this,"Thanks",Toast.LENGTH_LONG).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public void Second_layout(View view)
{
Intent i = new Intent(MainActivity.this, retrive.class);
startActivity(i);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_retrive);
sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
TextView tv =(TextView)findViewById(R.id.textView11);
sharedpreferences = getSharedPreferences("MyPREFERENCES",0);
String userString = sharedpreferences.getString("Name","Nothing Found");
tv.setText(userString);
}
答案 0 :(得分:2)
您在action
和getSharedPreferences()
方法中使用了错误的密钥。此外,模式必须相同。
你应该这样做:
getString()
答案 1 :(得分:0)
两件事情确保共享首选项名称“我的首选项”在两种方式中都是通用的,如果您以下列相同的方式存储和检索,则共享:
储存:
null
撷取:
Human
如果您有任何疑问,请在下方发表评论。