DialogFragment не отображается после добавления окна предупреждений

У меня есть функция, которая при запуске успешно отображает DialogFragment со следующим кодом

Диалоговый фрагмент

DialogFragment dialog;
View dialogView;
Context activityContext;

...

dialog = new DialogFragment(){
   @Override public Dialog onCreateDialog(Bundle savedInstanceState) {
      dialogView = getActivity().getLayoutInflater().inflate(R.layout.customView, null);
      ...
      AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
      builder.setView(dialogView);
      return builder.create();
   }
};

dialog.show(activityContext.getSupportFragmentManager() , "MyDialog");

Проблема в том, что после того, как я добавлю окно системного оповещения со следующим кодом, DialogFragment больше не отображается, НО, если я перехожу к другому приложению, когда мое приложение сворачивается, я могу видеть DialogFragment, пока он уменьшает его размер

Окно системного оповещения

WindowManager mWindowManager;
WindowManager.LayoutParams params;

...

mWindowManager = (WindowManager)activityContext.getSystemService(Context.WINDOW_SERVICE);
params = new WindowManager.LayoutParams(
   WindowManager.LayoutParams.WRAP_CONTENT,
   WindowManager.LayoutParams.WRAP_CONTENT,
   WindowManager.LayoutParams.TYPE_PHONE,
   WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
   PixelFormat.TRANSLUCENT
}
params.gravity = Gravity.CENTER_VERTICAL | Gravity.RIGHT;
addView(((LayoutInflater)activityContext.getSystemService("layout_inflater")).inflate(R.layout.floatingBotton, null));

Итак... Почему я не вижу свой диалог вверху (насколько я понимаю, диалог отображается) Почему это происходит только тогда, когда отображается окно системного предупреждения

Я пробовал использовать другие флаги для окна системных предупреждений, но у меня та же проблема с теми, которые я пробовал.


person Maw Boc    schedule 05.02.2015    source источник
comment
вы добавляете его в окно диалогового фрагмента?   -  person Elltz    schedule 09.06.2015
comment
метод dialog.show принадлежит вам? метод show диалога устарел в API уровня 13, вам нужно использовать менеджер фрагментов, чтобы показать ваш диалог. Покажите класс Dialog Fragment для лучшего понимания.   -  person Murtaza Khursheed Hussain    schedule 09.06.2015
comment
Насколько мне известно, z-индекс диалога определяется в порядке их отображения, например, вы отображаете свой фрагмент диалога после того, как оконный менеджер раздувает макет, тогда ваш DialogFragment будет отображаться поверх других макетов. Приоритет отдается последнему отображаемому на экране.   -  person Murtaza Khursheed Hussain    schedule 09.06.2015
comment
это может помочь вам решить вашу проблему: - [1]: stackoverflow.com/questions/15975988/   -  person pRaNaY    schedule 08.07.2015


Ответы (2)


FragmentManager fmg1=this.getChildFragmentManager();
//or
FragmentManager fmg1=this.getFragmentManager();

dialog.show(fmg1 , "MyDialog");

Пожалуйста, попробуйте это, это может быть полезно

person wadali    schedule 09.06.2015

укажите группу представлений для раздувания и установите для параметра attach to root значение true

http://developer.android.com/reference/android/view/LayoutInflater.html#inflate(int,%20android.view.ViewGroup,%20boolean)

addView(((LayoutInflater)activityContext.getSystemService("layout_inflater")).inflate(R.layout.floatingBotton, null));
person rahulrv    schedule 15.06.2015