我使用SharedPreference
来存储我的ID,但它不起作用。
当应用程序在Activity-A中启动时,我将id存储在prefs中,然后转到Activity-B。 在我的Activity-B中我有一个按钮,点击按钮我将回到Activity-A,我看到我存储的id不是优先的
活动-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);
}
});
答案 0 :(得分:1)
原因:您从意图中获取值并保存它。最初它被保存,你可以看到。但是,当您点击ActivityA
按钮时返回ActivityB
时,您不会将任何值传递给意图。这意味着id
变为空并且保存。所以你得到了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);
更新:您还可以在按钮点击时启动活动时传递意图值,您将获得该值。但是如果你不想发送任何价值,那么你需要先检查它。
答案 1 :(得分:-1)
只需用commit()
替换applyid = 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);