我的代码中有以下工作流程。我有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()始终将数据设为空。
请帮我找到错误。谢谢:))
答案 0 :(得分:1)
AFAIK您无法在调用onPause()
后设置活动结果。在onPause()
,onStop()
或onDestroy()
中设置活动结果可能会始终在onActivityResult()
中为空。
我不知道您为什么要在setResult()
方法中调用onPause()
,但也许您可以将其移至onBackPressed()
或onKeyDown()
方法。这应该可以解决你的问题。