Android 通过一个活动导航到另一个活动时,SharedReference被清除
我正在使用Android 通过一个活动导航到另一个活动时,SharedReference被清除,android,sharedpreferences,Android,Sharedpreferences,我正在使用SharedReference存储我的id,但它不起作用 当应用程序在Activity-A中启动时,我将id存储在prefs中,然后转到Activity-B。 在我的活动B中,我有一个按钮,点击按钮我将返回到活动A,我看到我存储的id不在preferece中 活动-A @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState)
SharedReference
存储我的id,但它不起作用
当应用程序在Activity-A中启动时,我将id存储在prefs中,然后转到Activity-B。
在我的活动B中,我有一个按钮,点击按钮我将返回到活动A,我看到我存储的id不在preferece中
活动-A
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
id = getIntent().getStringExtra("id");
editor = getApplicationContext().getSharedPreferences(MY_PREFS_NAME, 0).edit();
editor.putString("yourtextvalueKey", id);
editor.commit();
prefs = getApplicationContext().getSharedPreferences(MY_PREFS_NAME, 0);
text= prefs.getString("yourtextvalueKey", null);
System.out.println("text of id"+text);
活动-B
backaro.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(ActivityB.this,ActivityA.class);
startActivity(intent);
}
});
只需将apply替换为commit()
原因:您正在从intent获取值并保存它。最初它会被保存,你可以看到。但是,当您在点击
ActivityB
按钮时返回到ActivityA
时,您不会向intent传递任何值。这意味着id
变为null并保存。因此,您得到的结果是null
像这样更新代码
id = getIntent().getStringExtra("id");
if(id != null){
editor = getApplicationContext().getSharedPreferences(MY_PREFS_NAME, 0).edit();
editor.putString("yourtextvalueKey", id);
editor.commit();
}
prefs = getApplicationContext().getSharedPreferences(MY_PREFS_NAME, 0);
text= prefs.getString("yourtextvalueKey", null);
System.out.println("text of id"+text);
更新:当您单击按钮开始活动时,您还可以在intent中传递一个值,您将获得该值。但是,如果您不想发送任何值,则需要先检查它。这不应该发生。您可以发布完整的活动代码吗?不可能。您试图用哪种方法保存数据,用哪种方法检索数据。这就是我要求显示完整代码的原因。你能吗?请看我的答案。你能告诉我吗?
id = getIntent().getStringExtra("id");
if(id != null){
editor = getApplicationContext().getSharedPreferences(MY_PREFS_NAME, 0).edit();
editor.putString("yourtextvalueKey", id);
editor.commit();
}
prefs = getApplicationContext().getSharedPreferences(MY_PREFS_NAME, 0);
text= prefs.getString("yourtextvalueKey", null);
System.out.println("text of id"+text);