如何在片段中使用createPendingResult?

时间:2014-11-12 15:58:07

标签: android fragment onactivityresult

我有一个从片段创建的用户对话框。用户可以做出选择,我希望将此选择传递给片段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 ) {
        ...
    }       
}

0 个答案:

没有答案