21

子アクティビティから親にデータを送信しようとしています。しかし、どういうわけか、 onActivityResult(..) が呼び出されていません。ここにコードがあります

親の活動

selectedText.setOnTouchListener(new OnTouchListener() {



    public boolean onTouch(View v, MotionEvent event) {
                    if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
                        Intent intent = new Intent(Parents.this,Child.class);
                        startActivityForResult(intent, 1);
                    }
                    return true;
                }
            });


        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            switch (requestCode) {
            case 1:
                if (resultCode == RESULT_OK) {
                    if (data.hasExtra("selText")) {
                        selectedText.setText(data.getExtras().getString(
                                "selText"));

                    }
                    break;
                }
            }

子アクティビティ: setResult() で選択された値セットを確認できます。しかし、子の活動が終わっても、親の活動には戻りません。

textListView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int myItemInt,
                    long arg3) {
                selectedFromList =(String) (textListView.getItemAtPosition(myItemInt));
                Intent data = new Intent();
                data.putExtra("selText", selectedFromList);
                setResult(RESULT_OK,data);
                finish();
            }
        });
4

9 に答える 9

12

間違いを見つけました。子アクティビティの manifest.xml に以下の行がありました。

        android:launchMode="singleInstance"

この行を削除した後。それは魅力のように働いています!!!

ご意見やご提案をいただき、ありがとうございます。

于 2013-03-28T20:13:41.307 に答える
1

これがあなたの場合かどうかはわかりませんが、子アクティビティを開始するときはstartActivityForResult(intent)、代わりに ,を使用してくださいstartActivity();

于 2013-03-28T18:45:12.560 に答える
1

呼び出しアクティビティのマニフェストを から に変更するとandroid:launchMode="singleInstance"android:launchMode="singleTop"問題が修正されました。

于 2016-04-29T19:53:30.467 に答える
0

onPause は onActivityResult に影響を与えていました。

コーナーケースの1つは次のとおりです。
私のケースは異なり、ばかげています。問題はonPauseにfinishあり、アクティビティを呼び出して終了しました。それを取り除き、うまく機能します。

@Override
protected void onPause() {
    super.onPause();
    finish(); // this line causing the issue removed it. 
}
于 2016-04-14T05:40:34.810 に答える