在Android活动之间传递值

时间:2015-01-07 10:18:07

标签: android android-intent

我知道这个主题被打败了,但我仍无法找到答案。

我有一个activity1正在运行。

我从activity2启动activity1

Intent newIntent1 = new Intent(this,activity2.class);
startActivity(newIntent1);

我在activity2中获得了一些值,我需要将它们作为字符串返回给activity1。

如果我使用:

Intent newIntent = new Intent(this,activity1.class);
newIntent.PutExtra("dataname",SomeString);
startActivity(newIntent);

我再次启动activity1。但我需要将SomeStringactivity1返回到原来的activity2。那么我应该使用其他东西而不是意图吗?

3 个答案:

答案 0 :(得分:0)

startActivityForResult开始您的activity2,并使用setResult()方法将数据从activity2发送回activity1。在activity1中,您需要覆盖onActivityResult以更新activity2

中的数据

试试如下:

从Acivity1启动Activity2为:

Intent intnt = new Intent(this,  activity2.class);
startActivityForResult(intnt, 1);
activity2 中的

使用 setResult 发送数据:

Intent intent = new Intent();
intent.putExtra("keyvalue","value_here")
setResult(RESULT_OK, intent);        
finish();

并在 activity1 中接收数据为onActivityResult

onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == 1) {
         if(resultCode == RESULT_OK){
          String stredittext=data.getStringExtra("keyvalue");
    }
} 

答案 1 :(得分:0)

最简单的方法是将主活动类中的String(不在onCreate方法中)声明为静态,并在要将其引用的任意数量的活动中访问该字符串 其他活动中的MainActivity.stringName和 MainActivity中的stringName。

答案 2 :(得分:0)

到目前为止你做得还不错,你只需要请求你设定的值

在您的oncreate中(在您的活动中为1)

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity1);

    Bundle extras = getIntent().getExtras();
    if(extras != null)
    {
        String value = extras.getString("dataname");
    }
}