我使用此代碼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是創建新的AlertDialog.Builder(..)一個簡單的DialogFragment類創建DialogFragment。
然後我想刪除的對話框
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
如果您的'dialog'是'DialogFragment'的擴展名,那麼調用對話框片段上的'dismiss()'以將其刪除。 – Varun 2013-08-20 22:21:55