Android — Пользовательский диалоговый класс — Как закрыть

#android #class #dialog

#Android #класс #диалог

Вопрос:

Итак, я создал пользовательский диалоговый класс, но когда я пытаюсь его закрыть, он не закрывается.

Вот часть кода для закрытия диалога

 public static void CountDownDialog(final Activity activity){

    countDownDialog = new Dialog(activity, R.style.dialog);
    ...    
    negativeButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dismiss_dialog();
        }
    });

    countDownDialog.show();
    ...  
}
 

И метод, который должен закрыть диалоговое окно

 private static void dismiss_dialog() {

    countDownDialog.dismiss();

}
 

Ответ №1:

Насколько я понимаю из вашего примера, вы на самом деле не создаете какой-либо пользовательский диалоговый класс. Вы создаете обычный диалог и устанавливаете этот диалог в качестве члена в своем классе, но yiu использует статические функции. Вы можете попытаться вернуть диалоговое окно instant вместо того, чтобы устанавливать его в этом классе, тогда у вас будет ссылка на ваш экземпляр dialog от вашего вызывающего абонента и в любое время отклонить вызов для этого экземпляра.

Ответ №2:

Пример диалога;

 public class MyDialogFragment extends DialogFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_sample_dialog, container, false);
    Button dismiss = (Button) rootView.findViewById(R.id.dismiss);
    getDialog().setTitle(getResources().getString(R.string.app_name));
    dismiss.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            dismiss();
        }
    });
    return rootView;
}
 

}

Как вызвать;

 FragmentManager fm = getFragmentManager();
MyDialogFragment dialogFragment = new MyDialogFragment();
dialogFragment.show(fm, "");