【发布时间】:2015-07-14 01:50:31
【问题描述】:
我有一个父片段,其中有三个嵌套的子片段。 我想在我的子片段上调用 onActivityResult()。
我知道对于嵌套片段 onActivityResult() 没有被调用,所以我们需要从父片段显式调用它。
所以在我的父片段中,我已经覆盖了 onActivityResult:-
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
List<Fragment> fragments = getChildFragmentManager().getFragments();
if (fragments != null) {
for (Fragment fragment : fragments) {
fragment.onActivityResult(requestCode, resultCode, intent);
}
}
}
但问题是,即使我只处理一个子片段,onActivityResult() 也会为所有三个嵌套片段调用。
从我正在启动系统活动(联系人选择器)的每个子片段中,在我无法设置和意图额外的地方,它返回 null(系统活动不会发回调用它们的额外内容)。那么有没有一种方法可以识别特定的子片段并为嵌套片段运行 onActivityResult() ,为此我单击按钮。以下是我的嵌套片段中的代码。
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
contactPickerButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent contactPickerIntent = new Intent(ACTION_GET_CONTENT);
contactPickerIntent.setType(CONTENT_ITEM_TYPE);
getParentFragment().startActivityForResult(contactPickerIntent, PICK_CONTACT_REQUEST_ID);
}
});
}
【问题讨论】:
标签: android android-nested-fragment