Проблемы с алертилдиалогом показывают во фрагменте андроида - PullRequest
8 голосов
/ 06 июля 2011

Я следовал примеру Android, но у меня есть непонятная ошибка:

void showDialog() {
    DialogFragment newFragment = MyAlertDialogFragment.newInstance();
    newFragment.show(fm, "alert");
}

public static class MyAlertDialogFragment extends DialogFragment {
    public static MyAlertDialogFragment newInstance() {
        MyAlertDialogFragment frag = new MyAlertDialogFragment();
        return frag;
    }

    public Dialog onCreateDialog(Bundle savedInstanceState) {
        return new AlertDialog.Builder(getActivity()).setTitle("test")
                .setMessage("bla bla bla").create();
    }
}

newFragment.show(fm, "alert"); возвращает мне ошибку:

Метод show (FragmentManager, String) втип DialogFragment не применим для аргументов (FragmentManager, String)

Кто-то может мне помочь?

Ответы [ 3 ]

13 голосов
/ 03 ноября 2011

Проблема в том, что вам нужно использовать пакет поддержки FragmentManager, но вы используете собственный FragmentManager при вызове getFragmentManager(). Попробуйте вызвать getSupportFragmentManager() при инициализации вашей переменной fm.

6 голосов
/ 18 апреля 2012

На самом деле после того, как вы делаете, как говорит @Jacob, вы также должны убедиться, что вы включаете DialogFragment из пакета поддержки, а не из собственного пакета.

Вы можете сделать это, импортировав

import android.support.v4.app.DialogFragment;
5 голосов
/ 27 мая 2013

В моем случае мой minSDK установлен на 14, поэтому я не хотел использовать пакет поддержки. Моя проблема заключалась в том, что я неправильно импортировал DialogFragment, например:

import android.support.v4.app.DialogFragment;

Я изменил это на это, и это сработало:

import android.app.DialogFragment;
...