Я создаю DialogFragment, используя этот код
Fragment prev = getSupportFragmentManager().findFragmentByTag(DIALOG_SUBMISSIOIN_RESPONSE);
AlertDialogFragment alert = AlertDialogFragment.newInstance(text, getString(R.string.worklog_alert_ok));
alert.show(getSupportFragmentManager(), DIALOG_SUBMISSIOIN_RESPONSE);
где AlertDialogFragment - это простой класс DialogFragment, который создает новый AlertDialog.Builder (..).
Тогда я хочу удалить диалог
Fragment prev = getSupportFragmentManager().findFragmentByTag(dialogTag);
if (prev != null) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.remove(prev).commit();
}
Log.d(TAG, "dialog removed " + getSupportFragmentManager().findFragmentByTag(dialogTag) + ", isremoving = " + prev.isRemoving());
Однако в последнем сообщении Log.d я все еще получаю этот фрагмент (т.е. getSupportFragmentManager().findFragmentByTag(dialogTag)
не равен нулю, но возвращает действительный фрагмент).
Как заставить диалоговое окно быть немедленно удаленным? Это важно для меня, потому что у меня есть код, который выполняется после этой функции, и он проверяет, существует ли диалоговое окно, затем ничего не делает, если не существует, а затем создает его заново. Однако он никогда не воссоздает его, потому что getSupportFragmentManager().findFragmentByTag(dialogTag)
возвращает действительный DialogFragment
.
Я использую пакет совместимости Android, версия Android 2.2