Android setActivtyForResult将结果返回到第一个活动

时间:2016-03-24 09:32:47

标签: android android-intent

我有FirstActivity,它通过Intent调用SecondActivity

Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
Bundle extras = new Bundle();
extras.putString("param1","aaa");
extras.putString("param2","bbb");
intent.putExtras(extras);
startActivityForResult(intent, 1);

在SecondActivity完成后,我希望SecondActivity将一些变量发送给FirstActivity。然后我调用finsih(),这样它就会回到FirstActivity。如何让SecondActivity发送变量并在FirstActivity中获得结果?

4 个答案:

答案 0 :(得分:0)

只需在Intent中再制作一个SecondActivity     首先从FirstActivity

获取变量
  Bundle extras = getArguments();
     String extra1 = extras.getString("param1");
     String extra2 = extras.getString("param2");


然后将意图转移到FirstActivity

Intent intent = new Intent(getApplicationContext(), FirstActivity.class);
intent.putExtra("param1","aaa");
intent.putExtra("param2","bbb");
startActivity(intent);
finish();

我希望我能够解决你的问题。

答案 1 :(得分:0)

很容易。

使用startActivityForResult,给出一个整数来标识Activity, 然后在你的FirstActivity上覆盖onActivityResult方法。

http://developer.android.com/training/basics/intents/result.html

答案 2 :(得分:0)

您可以在以下链接中查看我对类似问题的回答

How to keep edittexts values after calling another activity than back

答案 3 :(得分:0)

这是一个示例,并根据您的需要进行更改。

在第一个活动上添加覆盖onActivityResult:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 0) //The request code you use on statActivityForResult (Any integer value)
    {
        if(resultCode == RESULT_OK)
        {
            String stringFromSecondActivity = data.getExtras().getString("Key");
        }
    }
}

像你发布的那样开始第二项活动

Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
Bundle extras = new Bundle();
extras.putString("param1","aaa");
extras.putString("param2","bbb");
intent.putExtras(extras);
startActivityForResult(intent, 0); //This is the request code to check on onActivityResult when you retrieve values from the SecondActivity after finishing it.

在你的第二个活动中,在完成它之前,你应该获得意图并添加一些额外内容。

getIntent().putExtra("Key", "theStringForTheFirstActivity");
setResult(RESULT_OK, getIntent());
finish();

当第二个Activity完成后,它会自动在你的第一个Activity上执行onActivityResult,你可以从第二个Activity获得你需要的值。