1

単純なアプリケーションで大きくてイライラする問題があります。A と B の 2 つのアクティビティがあります。アクティビティ A は、ボタンのクリックでアクティビティ B を開きます。アクティビティ B には 2 つの「終了」があります。ユーザーが 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

負でない を使用する必要がありますrequestCoderequestCodeが負の場合startActivityForResultは と同じstartActivityです。公式ドキュメントhttp://developer.android.com/reference/android/app/Activity.html#startActivityForResult(android.content.Intent,%20int)を参照してください

于 2013-08-11T21:46:15.097 に答える