【问题标题】:Android setActivtyForResult get result back to first activityAndroid startActivityForResult 将结果返回到第一个活动
【发布时间】:2016-03-24 19:08:03
【问题描述】:

我有 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中获取结果?

【问题讨论】:

    标签: android android-intent


    【解决方案1】:

    只需在您SecondActivity 中创建另一个Intent
    先从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();
    

    我希望我能纠正你的问题。

    【讨论】:

    • 问题是它会在FirstActivity上调用onCreate方法。我不会再调用 onCreate 了
    • @MeGoodGuy 我认为他会从您的回答中得到通知...无需向我的回答发送垃圾邮件好吗???!!
    • 是的,对不起。但是如果你不知道就不要回答-_-
    • 首先我回答了我不理解的方式,因为这个问题不够清楚,他要达到什么目的......其次,你的答案也不够清楚,你告诉他从谷歌文档中复制一个网址,可以吗?不要让我给你堆栈溢出条件“如何回答问题”,因为你现在是减号!
    【解决方案2】:

    很容易。

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

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

    【讨论】:

      【解决方案3】:

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

      How to keep edittexts values after calling another activity than back

      【讨论】:

        【解决方案4】:

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

        在第一个 Activity 上添加一个覆盖 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.
        

        在您的第二个 Activity 中,在完成之前,您应该了解意图并为其添加一些额外内容。

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-04
          • 1970-01-01
          • 2016-06-26
          • 2019-04-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多