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);