1

我对一个简单的应用程序有一个大而令人沮丧的问题。我有两个活动 - 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 应该“捕捉”结果并完成,但它根本不会发生。我错过了什么?

4

1 回答 1

3

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

于 2013-08-11T21:46:15.097 回答