Android的“onActivityResult”机制不起作用

时间:2013-08-11 21:39:06

标签: android android-activity

我对一个简单的应用程序有一个很大且令人沮丧的问题。 我有两个活动 - A和B.活动A在按钮点击时打开活动B.活动B有两个“结束”:如果用户点击B.Back如果刚刚结束并返回A,如果用户点击B.OK按钮,活动B就完成但在此之前它设置结果“OK”,因此活动A可以关闭太

这是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应该“抓住”结果并完成,但它根本不会发生。我错过了什么?

1 个答案:

答案 0 :(得分:3)

您必须使用非负requestCode。如果requestCode为否定,则startActivityForResultstartActivity相同。见官方文件http://developer.android.com/reference/android/app/Activity.html#startActivityForResult(android.content.Intent,%20int)