在具有不同进程的两个活动之间使用变量

时间:2014-04-15 13:51:53

标签: java android process

我通过在<activity>中添加fragment manifest来在分离的过程中创建我的Base活动:

android:process=":login_exception_process" 

在Base活动中,我启动我的连接对象,然后启动下一个Activitty。但是当我尝试获取连接对象的这些实例时,从另一个Activity中,它们是 NULL

Base活动启动的对象保存在static变量的单独类中。如何访问此变量?

2 个答案:

答案 0 :(得分:1)

将值传递给另一个活动

你必须开始下一个活动,在意图中发送一个额外的活动。

Intent intent = new Intent(this, NextActivity.class);
intent.putextra("keyName","value");
startActivity(intent);

在下一个活动中,您可以通过以下方式检索此值:

String data = getIntent().getExtras().getString("keyName");

Here is the documentation for that.


从活动中获取结果

开始另一项活动不一定是单向的。您还可以启动另一项活动并收到结果。例如,如果您要启动NextActivity并将值从NextActivity返回到BaseActivity,则可以使用startActivityForResult()

Here is the documentation for that.


更新

通过意图发送对象可以通过两个选项完成:

伪代码

<强>序列化

intent.putExtra("MyClass", your_object);  

// to retrieve object in second Activity
getIntent().getSerializableExtra("MyClass");

<强> Parcelable

Intent mIntent = new Intent(this, NextActivity.class);  
Bundle mBundle = new Bundle();  
mBundle.putParcelable(PAR_KEY, your_object);  
mIntent.putExtras(mBundle);
startActivity(mIntent);  

尽管可序列化似乎是最简单的选择,但请按照tutorial进行操作,它将教会您两种方式。


希望这会对你有所帮助。

答案 1 :(得分:0)

您应该使用Extras

基本上,在创建你的意图时你必须加上额外的东西:

intent.putExtra("name", "My name is John");

然后当你想在开始下一个活动时取回它时:

this.getIntent().getExtras().getString("name");

如果将Object转换为字节数组,则可以使用任何类型执行此操作。