如何使用SharedPreferences将数据从活动传递到另一个活动

时间:2018-07-29 13:53:33

标签: android sharedpreferences

我正在尝试将我的数据从第一个活动传递到另一个活动,即第四个活动。我正在使用onClick上的代码作为数据来自的第一个活动中的按钮,以及当数据要从第一个活动传递时在第四个活动的onclick中使用按钮。但它行不通。它只是传递0数据,这是我默认设置的数据。请帮助

这是我第一次活动中的SharedPreferences代码

SharedPreferences sharedPreferences = getSharedPreferences("userInfo", Context.MODE_PRIVATE);

SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("user_id", user_id);
editor.putString("username", usernameJ);
editor.putString("name", name);
editor.putString("email", email);
editor.apply();

这是我的四个活动中的SharedPreferences代码:

SharedPreferences sharedPreferences = getSharedPreferences("userInfo", Context.MODE_PRIVATE);
user_id = sharedPreferences.getInt("user_id", 0);
new UbahLapor().execute();

4 个答案:

答案 0 :(得分:1)

editor.apply()在线程(异步)中完成工作,因此可能需要时间。

所以请尝试

 editor.apply();

实例

 editor.commit;

答案 1 :(得分:1)

以这种方式保存您的首选项(前提是已经声明并分配了user_idusernamenameemail的值):

SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(this).edit();
editor.putInt("user_id", user_id);
editor.putString("username", usernameJ);
editor.putString("name", name);
editor.putString("email", email);
editor.apply();

并读回:

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
user_id = sharedPreferences.getInt("user_id", 0);

答案 2 :(得分:1)

您需要使用editor.commit()而不是editor.apply()

apply()异步更新您的共享首选项。 commit()同步更新您的共享首选项。请注意,commit()是阻塞调用。

答案 3 :(得分:1)

是这个

首先,如果您使用共享首选项存储数据,请尝试:

SharedPreferences.Editor editor = 
PreferenceManager.getDefaultSharedPreferences(this).edit();
editor.putString("username", username);
editor.putString("name", name);
editor.apply();

使用共享首选项获取数据

SharedPreferences sharedPreferences = getSharedPreferences("userInfo", Context.MODE_PRIVATE);
username= sharedPreferences.getString("username", null);

第二步,使用意图将数据第一个活动传递给另一个活动,然后尝试:

    Intent intent = new Intent(activity, activityClass);
    intent.putExtra("message", text);
    activity.startActivity(intent);

使用意图获取数据

    Intent intent=getIntent();
    success_msg_txt.setText(intent.getStringExtra("message"));