У меня есть пользовательский диалог в Android, я создаю диалоговое представление по методу onCreateView.Android DialogFragment не отклоняется
public class FiltroDialog extends DialogFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Когда я пытаюсь закрыть диалоговое окно, у меня есть метод внутри диалога называется с помощью onClickListener
boton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG,"doDismiss");
FiltroDialog.this.dismiss();
}
});
Я перекрытая несколько onMethods в диалоговом окне, чтобы увидеть Что происходит с диалогом.
@Override
public void onDestroyView() {
super.onDestroyView();
Log.d(TAG, "onDestroyView");
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
Log.d(TAG, "onAttach");
}
@Override
public void onDetach() {
super.onDetach();
Log.d(TAG, "onDetach");
}
@Override
public void onStart() {
super.onStart();
Log.d(TAG, "onStart");
}
@Override
public void onStop() {
super.onStop();
Log.d(TAG, "onStop");
}
@Override
public void onCancel(DialogInterface dialog) {
super.onCancel(dialog);
Log.d(TAG,"onCancel");
}
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
Log.d(TAG,"onDismiss");
}
Я попытался закрыть диалог с помощью функции увольнения(); dismissAllowingStateLoss(); с FragmentTransaction, и каждый раз я получаю тот же результат.
D/FiltroDialog(30492): doDismiss
D/FiltroDialog(30492): onStop
D/FiltroDialog(30492): onDestroyView
D/FiltroDialog(30492): onDetach
Но диалог это не распространяется исчезнуть с экрана, с помощью кнопки назад, диалоговые правильно, но пропадает с распускать() или метод FragmentTransaction.remove я получить только остановить, DestroyView, Detach, но не onDismiss()
Когда я снова нажмите на кнопку, только это показано в LogCat
D/FiltroDialog(30492): doDismiss
Я попробовал несколько способов, чтобы закрыть диалоговое окно. Вот код, я использую, чтобы показать диалоговое окно с активности (перестарались из фрагмента)
FiltroDialog newFragment = FiltroDialog.newInstance();
newFragment.show(getSupportFragmentManager(), TAG_DLG_FILTROS);
Вот код, чтобы попытаться закрыть окно от активности (перестарались из фрагмента, такие же результат)
DialogFragment prev = (DialogFragment) getSupportFragmentManager().findFragmentByTag(TAG_DLG_FILTROS);
if (prev != null) {
prev.dismiss();
}
Вот еще одну попытку, чтобы попытаться закрыть от активности (перестарались из фрагмента, такой же результат)
Fragment prev = getSupportFragmentManager().findFragmentByTag(TAG_DLG_FILTROS);
if (prev != null) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.remove(prev);
ft.commit();
}
Вот еще одну попытку закрыть из диалогового окна, пытаясь вызвать отменить() диалогового окна диалога DialogFragment.
boton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG,"doDismiss");
FiltroDialog.this.getDialog().cancel();
}
});
Не отклоняет диалог и не вызывает onDismiss ни Stop, DestroyView, Detach methods.
Вот еще одна попытка закрыть диалоговое окно, пытающееся вызвать метод reject() диалогового окна внутри диалогового окна DialogFragment.
boton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG,"doDismiss");
FiltroDialog.this.getDialog().dismiss();
}
});
Не отклоняет диалог и не вызывает onDismiss ни Stop, DestroyView, Detach methods.
У меня есть некоторые диалоги в приложении, и у меня никогда не было этой проблемы, я не совсем новичок в программировании для Android, но я не знаю, что я делаю неправильно? Это ошибка в библиотеке совместимости?
Вы уверены, что вызывается boton.setOnClickListener? – Blackbelt
Да, в onClickListener я поставил вызов Log.d() для обеспечения –
, и если вы попытаетесь уволить его больше раз? – Blackbelt