Получить результат DialogFragment в BottomSheetDialogFragment

У меня есть BottomSheetDialogFragment, который вызывает DialogFragment и ожидает результата от него через реализацию слушателя.
Я установил из метода BottomSheetDialogFragment setTargetFragment(this, 0), но в настоящее время я сталкиваюсь с «неправильным первым типом аргумента … требуется android.приложение.Фрагмент.»

import android.support.design.widget.BottomSheetDialogFragment;

public class MyBottomSheetDialogFragment extends BottomSheetDialogFragment {
    //...
    private void action(JSONObject item) {
        DialogFragment dialog = MyDialogFragment.newInstance(item);
        dialog.setTargetFragment(this, 0);
                              // ^^^^ Wrong first argument ... Required ... Fragment
        dialog.show(getActivity().getFragmentManager(), getTag());
        //...
    }
    //...
}

Содержимое файла MyDialogFragment

import android.app.DialogFragment;

public class MyDialogFragment extends DialogFragment {

    public static MyDialogFragment newInstance(JSONObject payment_data) {
        return new MyDialogFragment();
    }

    //...
}

1 ответ

  1. Мое намерение состояло в том, чтобы открыть DialogFragment из BottomSheetDialogFragment и получить результат, немного похожий на обратный вызов.

    Несмотря на то, что BottomSheetDialogFragment расширяет AppCompatDialogFragment, который расширяет DialogFragment, который расширяет фрагменты, я не смог «setTargetFragment» из BottomSheetDialogFragment. Поэтому я решил изменить подход и использовать слушателей таможни . Теперь я вызываю как my BottomSheetDialogFragment, так и DialogFragment непосредственно из MainActivity, прослушивая каждый из них.

    Простой и работает, как ожидалось.