2

我的代码中有以下工作流程。我有使用 startActivityForResult(intent, requestCode)fragment A开始一个新的。activity B活动 B 有一个片段说fragment C,其中包含一个列表视图(它的适配器有一个数组列表)和一个编辑文本,用于将新值添加到列表视图中。

我打算将数据发送回fragment A. 我fragment C在同一个片段的 onPause() 方法中实现了一个接口。

@Override
public void onPause() {
    // TODO Auto-generated method stub
    OnSubtaskExitListener onSubtaskExitListener = (OnSubtaskExitListener) getSherlockActivity();
    onSubtaskExitListener.onExit(Subtasks);
    super.onPause();
}

子任务是在编辑文本中从添加按钮添加新项目时更新的数组列表。

我已经实现了这个接口,activity B其中包含片段 C。

@Override
public void onExit(ArrayList<HashMap<String, String>> subtasks) {
....
intent.putExtra("ResultArray", stringArray);
setResult(RESULT_OK, intent);
finish();

请注意,在片段 A 中调用了 startActivityForResult。因此,使用了 setResult。

问题:在onActivityResult(int requestCode, int resultCode, Intent data)片段 A 中,Intent 数据始终为空。我在活动 B 的 onExit 方法中使用了 android.util.Log 来查看在 put extra 中发送的数据是否为空,例如Log.d("Array Result", stringArray[0].toString());但 onActivityResult() 总是获取数据为空。

请帮我找出错误。谢谢 :)

4

1 回答 1

2

onPause()AFAIK调用后您无法设置活动结果。设置活动结果onPause()onStop()或者onDestroy()可能总是给你 null in onActivityResult()

我不知道您为什么要调用方法setResult()onPause()但也许您可以将其移至onBackPressed()oronKeyDown()方法。这应该可以解决您的问题。

于 2013-03-29T22:16:08.417 回答