【问题标题】:onActivityResult in First Activity not returning result after finish second activity完成第二个活动后,第一个活动中的 onActivityResult 未返回结果
【发布时间】:2016-05-28 12:04:20
【问题描述】:

Activity A 调用 ActivityB 使用以下代码

startActivityForResult(new Intent(context, ActivityB), 1);

活动 B 通过以下方式调用活动 c:

startActivityForResult(new Intent(context, Activityc), 2);

我完成活动 C 并返回结果并在那里开始新的活动 D

startActivity(new Intent(context, ActivityD);
setResult(RESULT_OK, new Intent());
finish();

我想在获取返回结果时完成活动 A 和活动 B

但我没有得到返回结果。在这种情况下

onActivityResult no calling in Activity A and Activity B

总之我想要这个功能

btnGo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent next = new Intent(ActivityC.this, ActivityD.class);
                startActivity(next);
                setResult(RESULT_OK, next);
                finish();

            }
        });

我只得到两者之一。它进行下一个活动或返回结果。我想同时返回返回结果的下一个活动。

【问题讨论】:

  • 你试过我的代码了吗?
  • 是的。但这是我要求的不同,
  • 我想要这种类型的函数Intent next = new Intent(ThirdActivity.this, FourthActivity.class);开始活动(下一个); setResult(RESULT_OK, 下一个);完成();
  • 为什么总是要开始活动
  • bcz 我想用返回结果集午餐新活动

标签: android android-activity startactivityforresult


【解决方案1】:

可能是您没有设置 requestCode 这就是您遇到此问题的原因,请尝试这样

public final static int GO_FOR_COUNTRY = 11;
public final static int GO_FOR_STATE = 12;

 @Override
    public void onClick(View v) {

        switch (v.getId()) {
           case R.id.register_country:
                Intent intents=new Intent(Registration.this,CountryList.class);
                startActivityForResult(intents, GO_FOR_COUNTRY);
                break;

            case R.id.register_state:
                Intent intentstate=new Intent(Registration.this,StateList.class);

                intentstate.putExtra("cids",cid);
                startActivityForResult(intentstate, GO_FOR_STATE);
                break;


            default:
                break;
        }

在你的 OnActivityResult 中

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


        if (resultCode == Activity.RESULT_OK) {


            switch (requestCode)
            {

                case GO_FOR_COUNTRY:

                    try {

                       //your stuff
                    } catch (Exception e) {

                        e.printStackTrace();
                    }
                    break;

                case GO_FOR_STATE:

                    try {

                        //your stuff
                    } catch (Exception e) {

                        e.printStackTrace();
                    }
                    break;

            }



        }


    }

【讨论】:

  • 我已经设置了 setResult(RESULT_OK, next);但在我的情况下仍然不起作用
【解决方案2】:

我试图解决我的问题,但我找不到任何地方。实际上,Android 活动并非全部同时启动活动并返回结果集。所以我需要用另一种方式来管理它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多