【问题标题】:DialogFragment not showing after adding Alert Window添加警报窗口后未显示 DialogFragment
【发布时间】:2015-06-15 22:26:05
【问题描述】:

我有一个函数,当触发时,会成功显示带有以下代码的 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));

所以...为什么我在顶部看不到我的对话框(据我了解,对话框正在显示) 为什么它只在显示系统警报窗口时发生

我尝试过使用系统警报窗口的其他标志,但我尝试过的标志也有同样的问题

【问题讨论】:

  • 您是否将其添加到对话框片段的窗口中?
  • dialog.show 方法是你自己的吗?对话框的 show 方法在 API 级别 13 中已弃用,您需要使用片段管理器来显示您的对话框。显示 Dialog Fragment 类以便更好地理解..
  • AFAIK 对话框 z-index 是按照它们显示的顺序确定的,例如,您在窗口管理器膨胀布局之后显示对话框片段,然后您的 DialogFragment 将显示在其他布局之上。屏幕上最后显示的优先级。
  • 它可以帮助您解决问题:- [1]: stackoverflow.com/questions/15975988/…

标签: android android-dialogfragment dialogfragment system-alert-window


【解决方案1】:
FragmentManager fmg1=this.getChildFragmentManager();
//or
FragmentManager fmg1=this.getFragmentManager();

dialog.show(fmg1 , "MyDialog");

请试试这个可能有用

【讨论】:

    【解决方案2】:

    指定视图分组 ing inflate 并将附加到根设置为 true

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

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

    【讨论】:

      猜你喜欢
      • 2020-06-05
      • 2019-11-22
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-21
      相关资源
      最近更新 更多