启动器活动中的自定义对话框覆盖活动布局

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了启动器活动中的自定义对话框覆盖活动布局相关的知识,希望对你有一定的参考价值。

我的启动器活动中有一个对话框需要一些用户输入并显示它我在onCreate()中有这个代码...

 final Dialog dialog = new Dialog(this);
 dialog.setContentView(R.layout.dialog);
 DialogBinding dialogBinding = DataBindingUtil.setContentView(this, R.layout.dialog);
 popupBinding.dialogButton.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View view) {
           dialog.dismiss();
       }
   });
 dialog.show();

对话框按钮有一个onClick监听器来关闭它,但为了做到这一点,必须将对话框声明为final。以前(当此活动不是启动器时),我将对话框声明为实例变量,但这会导致错误。

private Dialog dialog = new Dialog(this); 

但是,在onCreate方法中声明对话框会导致启动器活动的布局被对话框替换,以便对话框显示在其自身的副本上。

Launcher Activity with dialog

我不确定为什么会这样做,但我想知道是否有办法防止这种情况发生。谢谢!

答案

这会将对话框布局设置为活动的内容视图。

DialogBinding dialogBinding = DataBindingUtil.setContentView(this, R.layout.dialog);

所以你将你的活动与对话混合在一​​起。

对于你的活动,这应该是这样的

MyActivityBinding activityBinding = DataBindingUtil.setContentView(this, R.layout.my_activity);

以上是关于启动器活动中的自定义对话框覆盖活动布局的主要内容,如果未能解决你的问题,请参考以下文章

片段的布局被活动的工具栏/标签布局覆盖

Android中的动态启动活动?

在片段活动中显示自定义对话框

启动对话框以获取结果以将值返回给主要活动

在片段中,如何查找活动布局中定义的视图?

使用片段在选项卡中启动活动