我正在尝试从子活动向父活动发送数据。但不知何故,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()
中添加一些System.out.println()
,以查看实际执行的代码。一旦缩小范围,您应该能够找出问题所在。如果不能,请编辑您的帖子并告诉我们正在执行哪些行。 - DononActivityResult()
的非常顶部放置一个println()
,但什么也没有发生?因为我认为正在发生的是onActivityResult()
实际上正在被调用,但是switch
语句或其中一个if
语句正在阻止您的代码执行。 - DonstartActivityForResult()
之后立即调用了finish()
,这导致我的调用方Activity
未能接收到结果,因为它在启动其他Activity
后就已经结束了。 - joao2fast4u