DialogFragment, отображаемый из onContextItemSelected, не сохраняется в onPause / onResume

У меня есть DialogDragment, который я могу показать одним из двух способов:

1) При нажатии на элемент ListView из его OnItemClickListener

2) Активизируя контекстное меню ListView и выбирая пункт меню

Выполнение # 1 прекрасно работает во всех событиях жизненного цикла, но если я вызову его через # 2 и приостановлю действие (перейдя домой) и возобновлю его через переключатель задач, диалоговое окно больше не отображается. Фрагмент есть, и я могу повернуть устройство и показать диалог.

Я экспериментировал, и если я помещаю показ DialogFragment в обработчик с задержкой не менее 1/2 секунды, это работает.

Следующий фрагмент не работает - он показывает диалог, но затем пауза / возобновление скрывает его:

public boolean onContextItemSelected(android.view.MenuItem item) {
    boolean consumed = false;

    switch (item.getItemId()) {
    case R.id.menu_item:
        showMyDialogFragment();
        consumed = true;
        break;
    }

    return consumed;
}

Так что следующий фрагмент работает. Пауза / возобновление отображения диалогового окна снова правильно:

public boolean onContextItemSelected(android.view.MenuItem item) {
    boolean consumed = false;

    switch (item.getItemId()) {
    case R.id.menu_item:
        new Handler().postDelayed(new Runnable() {
            public void run() {
                showMyDialogFragment();
            }
        }, 300);

        consumed = true;
        break;
    }

    return consumed;
}

Замена задержки 300 мсек с задержкой 0 мс или 250 мс приводит к ее повторному прерыванию. Это повторяется 100% времени.

Это ужасный взлом, очевидно, усугубленный константой, которая, вероятно, зависит от скорости устройства.

Кто-нибудь знает, почему это происходит, и / или предлагает лучшее решение? Я потратил часы на эту проблему, и это лучшее, что я мог придумать.

Ответы на вопрос(2)

Ваш ответ на вопрос