我正在尝试将数据从儿童活动发送给父母.但是不知何故,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(); } });
解决方法
对于遇到同样问题的人,不能接收onActivityResult的症状,以下情况可能会导致此问题.
检查你正在使用startActivityForResult(),不要使用startActivity().>如果你用overBackPressed方法做一些事情,super.onBackPressed();必须定位在最后的方法,而不是在第一行. (我的情况下花5个小时)>删除android:launchMode =“singleInstance”在清单或等效参数中创建一个意图.>在被调用者活动的清单中删除noHistory =“true”.>检查setResult()是否错过.> finish()被调用来关闭活动.使用finishActivity()来关闭被调用者的活动.>使用requestCode超过零.负值不起作用