【发布时间】:2013-03-28 18:22:42
【问题描述】:
我正在尝试将数据从子活动发送到父活动。但不知何故, 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();
}
});
【问题讨论】:
-
在子活动中尝试 Intent data = getIntent() 后无法正常工作
-
尝试在
onActivityResult()中添加一些System.out.println()以查看实际执行的代码。缩小范围后,您应该能够找出问题所在。如果没有,请编辑您的帖子并告诉我们正在执行哪些行。 -
所以当我在父活动上调用触摸事件时..它进入 onTouch() 并且当它执行 startActivityForResult(intent, 1) 行时,它进入 onActivityResult() 请求代码为 1 . 之后它跳转到 Child Activity 并加载它。从 ChildActivity.OnItemClick() 中选择值后..它完成子活动但永远不会返回到父活动的 onActivityResult()。希望清楚
-
所以,澄清一下,您尝试将
println()放在onActivityResult()的非常顶部 中,但什么也没发生?因为我认为正在发生的是onActivityResult()实际上正在被调用,但是switch语句或if语句之一正在阻止您的代码执行。 -
是的 onActivityResult() 在 ParentActivity 正在执行时被调用。它转到 switch (requestCode) { case 1: 但从未进入 if (resultCode == RESULT_OK) {} 块。因为 child 还没有被调用。据我了解,当子活动设置数据时,将调用此方法。但是,当我完成 ChildAcitivity 时,它再也没有被调用过。