Я создаю очень простой словарь. Функция, которую я пытаюсь реализовать прямо сейчас, - это перейти к функции, которая приводит пользователя к определенному термину слова. Я делаю это, предлагая пользователю фрагмент диалога, который запрашивает у пользователя номер страницы. (Диалог фрагмент будет получить срабатывает через обратного вызова, кнопка печати) Это мой код для этогоПочему DialogFragment.dismiss не удаляет диалоговое окно сразу?
public class GoToDialog extends DialogFragment{
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String pgn = pageNumber.getText().toString();
if(!isNumeric(pgn) || pgn.isEmpty()) {
Toast.makeText(getActivity(), "Please enter a valid number", Toast.LENGTH_SHORT).show();
} else {
int pagina = Integer.parseInt(pgn);
if(pagina <= 0 || pagina > total) {
Toast.makeText(getActivity(), String.format("Please enter a valid " +
"term number between 0 and %d", total), Toast.LENGTH_SHORT).show();
} else {
getDialog().dismiss();
getFragmentManager().executePendingTransactions();
communicator.onDialogMessage(pagina);
}
}
}
});
Вот скриншоты, когда я запускаю мое приложение
screenshot2 (сразу после экрана 1)
с точки зрения функциональности The диалог загружается отлично и может привести пользователя в нужное место. Однако в этом примере взятия пользователя от термина 7 до термина 5 пользователь переходит к правильному члену , но диалог не закрывается, как следует из getDialog(). Устранение(). Я знаю, что увольнение вызвано, потому что я прошел через код и коммуникатор. InDialogMessage (pagina) возвращает номер правильного термина в действие. Диалог закрывается, когда я выбираю другой номер термина, на который нужно перейти. Кто-нибудь видит проблему? Это не имеет для меня никакого смысла.
Чтобы закрыть диалоговое окно, отклонить это правильный метод использовать - How to correctly dismiss a DialogFragment? Я также попробовал то, что пользователь предложил в Correct way to remove a DialogFragment: dismiss() or transaction.remove()?, что называть executePendingTransactions().