我有一个从片段创建的用户对话框。用户可以做出选择,我希望将此选择传递给片段onActivityResult
。为此,我使用createPendingResult
。此方法适用于活动,但对于片段,我需要调用getActivity().createPendingResult
。这会导致结果传递给父活动而不是片段!
从父活动onActivityResult
调用片段的onActivityResult对我来说有点复杂。
还有另一种方式吗?
这是对话框的代码:
public static void selectChoice(final Context c, final PendingIntent callback) {
(new AlertDialog.Builder(c))
.setTitle(title)
.setSingleChoiceItems(items, index, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
try {
callback.send(c, STATUS_CHANGED,
new Intent().putExtra(EXTRA_CHOICE, which));
} catch (CanceledException e) {
e.printStackTrace();
}
dialog.dismiss();
}
}).show();
}
这是我在片段中进行的调用:
selectChoice(getActivity(), getActivity().createPendingResult(
REQUEST_DIALOG, new Intent(), PendingIntent.FLAG_UPDATE_CURRENT)
);
这在父活动中触发,但不在片段中触发:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if ( requestCode == REQUEST_DIALOG && resultCode == STATUS_CHANGED ) {
...
}
}