Android 安卓&x27;s";onActivityResult“;机制赢得';行不通

Android 安卓&x27;s";onActivityResult“;机制赢得';行不通,android,android-activity,Android,Android Activity,我在一个简单的应用程序中遇到了一个大而令人沮丧的问题。 我有两个活动-A和B。活动A通过单击按钮打开活动B。活动B有两个“结束”:如果用户单击B,返回到A,如果用户单击B.OK按钮,则活动B已完成,但在此之前,它将设置结果“OK”,以便活动A也可以关闭 这是以下代码的伪代码: btnNext.setOnClickListener(new OnClickListener() { @Override public void onClick(View v

我在一个简单的应用程序中遇到了一个大而令人沮丧的问题。 我有两个活动-A和B。活动A通过单击按钮打开活动B。活动B有两个“结束”:如果用户单击B,返回到A,如果用户单击B.OK按钮,则活动B已完成,但在此之前,它将设置结果“OK”,以便活动A也可以关闭

这是以下代码的伪代码:

btnNext.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                                //some code...
                startAct(data);
            }
        });

private void startAct(Intent inte) {
        startActivityForResult(inte, -999);
    }

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

        System.out.println(resultCode);

        if(requestCode != -999)
            return;

        if(resultCode == RESULT_OK)
            finish();
    }
活动B是这样的:

btnOk.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    //some other code...
                    finishOK();
                }
            });

private void finishOK() {
        setResult(RESULT_OK, new Intent());
        finish();
    }

问题是这不起作用——当我按下“btnOK”键时,B应该完成,A应该“捕捉”结果并完成,但这根本不会发生。我缺少什么?

您必须使用非负的
请求代码。如果
requestCode
为负值,则
startActivityForResult
startActivity
相同。看官方文件

哦,天哪,我真走运!我选择了任何一个数字只是为了让它与众不同,我从…中选错了一个。。。。千千万万的人:)谢谢,这很有效!