如何为多个活动使用额外数据/ sharedpref?

时间:2015-03-20 16:18:01

标签: android

如果我有3个活动= LoginActivity,Dashboard,Activity3

LoginActivity 发送extradata OnClickListener

Intent i = new Intent(loginActivity.this,Dashboard.class);
                    i.putExtra("student_id", StudentID);
                    startActivity(i);

然后信息中心检索

Intent intent= getIntent();
String StdID = intent.getStringExtra("student_id"); 

额外的数据运行正常,但我如何将额外的数据重用到 Activity3 ? 当我点击信息中心

中的OnClickListener时,活动3 就会启动

是否可以重复使用超过2项活动的额外数据? 请帮帮我:)。

3 个答案:

答案 0 :(得分:0)

您需要将此添加到用于启动Activity3的意图中,或者更常见的情况是在您成功登录后将此类信息保存到共享首选项(或数据库)。

然后你可以在需要的每个活动中查找这些数据(也可以用它来决定当用户返回应用程序时是否显示登录界面)等等。

//保存用户ID SharedPreferences sharedPref = getActivity()。getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPref.edit(); editor.putString(“user id”,userId); editor.commit();

//获取用户ID String userId = getActivity()。getPreferences(Context.MODE_PRIVATE).getString(“userid”);

答案 1 :(得分:0)

如果你的意思是可以通过多个Activities传递数据,答案绝对是肯定的。您可以通过以与您现在正在执行的操作类似的方式传递数据来轻松完成此操作。

我们现在说我们已经在您的信息中心Activity,并想要打开Activity 3.如果信息中心正在呼叫Intent任何额外的传递给它,你可以这样传递:

Intent i = new Intent(Dashboard.this, Activity3.class);
if(getIntent().getExtras() != null) i.putExtras(getIntent().getExtras());
startActivity(i);

那就是它。关键在于:

i.putExtras(getIntent().getExtras());

这基本上是说"将Bundle Activity打开到Bundle的{​​{1}},这将打开下一个Intent }&#34。

请注意,添加的任何值都会覆盖Activity中设置的预先存在的值,因此排序很重要。

答案 2 :(得分:0)

您可以使用

将字符串从第二个活动传递到第三个活动
Intent intent1 = new Intent(getApplication(), Activity3.class);
            intent1.putExtra("student_id",StdId);
            startActivity(intent1);

putExtra中的第一个参数是一个键,它可以是任何字符串。 Intent作为键值对传递。您可以使用另一个活动中的密钥检索该值。

在第三个活动中检索额外的字符串,即Activity3

String studentId = getIntent().getStringExtra("student_id");

这样可以正常工作。