15

私は2つの画像ボタンでカスタムを表示するためにDialogActivityから呼び出されるを持っています。FragmentDialog

DialogActivity.onCreate

final Dialog dialog = new Dialog(this, R.style.DialogTheme);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.dialog_pause); 
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
dialog.show();

DialogActivity.onClick

        @Override
        public void onClick(View v) {
            Log.d(LOGTAG, "onClick CONTINUE");

            Intent resultData = new Intent();
            resultData.putExtra("TEST", "return data");
            setResult(666, resultData);
            dialog.cancel();
        }

呼び出すフラグメントstartActivityForResult

Intent dialogActivityIntent = new Intent(getActivity(), DialogActivity.class);
startActivityForResult(dialogActivityIntent, 999);

ActivityFragmentそれは呼び出しますstartActivityForResult

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);
}

ボタンをクリックすると、ダイアログがキャンセルされ、バックグラウンドアクティビティ(フラグメント)が表示されます。

またはに、、、onActivityResult...onResumeの呼び出しはありません。FragmentActivityFragment

私が試したこと:

onActivityResult両方に実装するにはFragmentActivityそれには私のが含まれていFragmentます。

知っておくべきこと:

noHistory=true私は持っているすべてのものに属性を設定しますActivity

その場合finish()、呼び出しも閉じられonClick、アプリケーションは前に戻ります。Activity/FragmentDialogActivityActivity

これは問題かもしれません、私は呼び出さないでくださいfinish()...しかし、私が呼び出すと、それは別のにfinish()終了します。それは呼び出します。ActivityActivitystartActivityForResult

私がチェックしたリンク:

startActivityForResult()はonActivityResult(int requestCode、int resultCode、Intent data)を呼び出さないのですか?

onActivityResult()androidをトリガーできませんか?

startActivityForResultがonActivityResultを呼び出さないようです

onActivityResultが呼び出されることはありません

AndroidonActivityResultは呼び出されません

アクティビティがフラグメントから開始されたときにonActivityResult()が呼び出されない


すべてが明確に説明されていることを願っています^^。

前もって感謝します。

4

2 に答える 2

17

属性を持つアクティビティは、新しいviaを起動するときに呼び出されるnoHistory=trueことはありません。ドキュメントに記載されているように、属性がに設定されている場合、ユーザーがから離れたときに呼び出されます。onActivityResult()ActivitystartActivityForResult()noHistorytruefinish()ActivityActivity

したがって、startActivityForResult()が呼び出されると、Activityはから離れてナビゲートされ、finish()呼び出されて、への呼び出しを受信しなくなりますonActivityResult()noHistory=trueを呼び出している属性を削除してから、を呼び出した場合でも、属性Activityを起動した属性が表示され、への呼び出しを受け取る必要があります。startActivityForResult()finish()DialogActivityonClick()ActivityonActivityResult()

于 2013-01-03T00:14:33.117 に答える
0

結果が完了したら、すべてのアクティビティを閉じます。たとえば、オーバーライドされたonActivityResultに、finishActivity(アクティビティ1..N)を追加できます。それぞれをtrycatchの下に置くことを忘れないでください。

于 2021-12-25T09:00:08.683 に答える