片段中的onActivityResult()始终接收null Intent

时间:2013-03-29 19:57:21

标签: android

我的代码中有以下工作流程。我有fragment A使用startActivityForResult(intent,requestCode)启动新的activity B。活动B有一个片段fragment C,它包含一个列表视图(它的适配器有一个arraylist)和一个edittext,下面是为了在listview中添加新值。

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

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

子任务是在编辑文本中添加新按钮添加新项目时更新的arraylist。

我在activity B中实现了这个包含片段C的接口。

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

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

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

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

1 个答案:

答案 0 :(得分:1)

AFAIK您无法在调用onPause()后设置活动结果。在onPause()onStop()onDestroy()中设置活动结果可能会始终在onActivityResult()中为空。

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