onActivityResult方法没有被称为Android

Chi*_*tan 19 android android-activity

我正在尝试将子活动的数据发送到父级.但不知何故,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;
                }
            }
Run Code Online (Sandbox Code Playgroud)

子活动:我可以在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();
            }
        });
Run Code Online (Sandbox Code Playgroud)

You*_*jae 81

对于遇到相同问题的任何人onActivityResult,在以下情况下无法接收的症状都可能导致此问题.

  • 检查您是否使用startActivityForResult()正确,请勿使用startActivity().
  • 如果你在overriden onBackPressed方法中做某事,super.onBackPressed();必须定位在方法的最后一个,而不是在第一行.(我的情况花了5个小时)
  • android:launchMode="singleInstance"在manifest或等效参数中删除以创建intent.
  • 删除noHistory="true"被调用者活动的清单.
  • 检查setResult()错过了.
  • finish()被叫来关闭活动.用于finishActivity()关闭被调用者活动.
  • 使用requestCode超过零.负值不起作用.


Chi*_*tan 10

我发现了错误.我在manifest.xml的下面有一行用于子活动.

        android:launchMode="singleInstance"
Run Code Online (Sandbox Code Playgroud)

删除此行后.它的工作就像一个魅力!

谢谢大家的意见和建议.