Помогите создать DialogFragment с помощью View

263
17 мая 2017, 06:35

Всем привет! Пытаюсь создать AlertDialog через фрагмент, реализованный в отдельном классе. Хочу использовать специальную view для отображения диалога, со своими кнопками и т.д., но андроид студия ругается. Почему? Мой код:

public class NewDialogs extends DialogFragment {

public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder mBuilder = new AlertDialog.Builder(getActivity());
    View mView = View.inflate(getActivity(), R.layout.dialog_new, null);
    Button yes = (Button) mView.findViewById(R.id.btnYes);
    Button no = (Button) mView.findViewById(R.id.btnNo);
    mBuilder.setView(mView);
    yes.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

// и далее по тексту } Система выдает такую ошибку: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. at android.view.ViewGroup.addViewInner(ViewGroup.java:4310) at android.view.ViewGroup.addView(ViewGroup.java:4146) at android.view.ViewGroup.addView(ViewGroup.java:4118) at com.android.internal.app.AlertController.setupCustomContent(AlertController.java:603) at com.android.internal.app.AlertController.setupView(AlertController.java:514) at com.android.internal.app.AlertController.installContent(AlertController.java:241) at android.app.AlertDialog.onCreate(AlertDialog.java:423) at android.app.Dialog.dispatchOnCreate(Dialog.java:394) at android.app.Dialog.show(Dialog.java:295) at android.app.DialogFragment.onStart(DialogFragment.java:499) at android.app.Fragment.performStart(Fragment.java:2244) at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1002) at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1148) at android.app.BackStackRecord.run(BackStackRecord.java:793) at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1535) at android.app.FragmentManagerImpl$1.run(FragmentManager.java:482) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5451) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Answer 1

Переопредели метод public void setupDialog(final Dialog dialog, int style) и в нём

View parent = View.inflate(getContext(), R.layout.dialog, null);
dialog.setContentView(parent);
READ ALSO
Как удалить строку из JTable?

Как удалить строку из JTable?

Я хочу удалить некоторые строки из JTableКак мне это сделать?

417
Singleton retrofit

Singleton retrofit

Как создать один класс на весь проект и использовать его во всех Presenter`ах

255
Передача параметров через ссылку в Java

Передача параметров через ссылку в Java

Решал задачи абрамяна на JavaДо решал до proc, и вот теперь никак не могу решить proc1

272
Вывод данных массива элементов

Вывод данных массива элементов

Не знаю , что записать в методы, чтобы получить результаты

270