【问题标题】:Display Android dialog on top of another?在另一个之上显示Android对话框?
【发布时间】:2011-12-08 00:43:47
【问题描述】:

我有 2 个警告对话框,对话框 A 和对话框 B。单击对话框 A 的其中一个按钮将弹出对话框 B。然后我想要一个按钮来关闭对话框 B 并返回对话框 A。 除了对话框 B 执行 showDialog(dialogA) 之外,还有其他方法吗?

这可行,但您可以看到对话框 A 的重新加载,而不是仅仅返回到已经存在的对话框 A。在对话框 B 中执行关闭只会关闭它们。

一个小问题,但我想看看是否有办法将它们堆叠在一起。

谢谢

【问题讨论】:

    标签: android


    【解决方案1】:

    使用基本的对话框构建块是不可能将它们堆叠起来的,您需要重新显示第一个对话框。 这样做的原因是,当您按下对话框按钮时,它会在内部关闭对话框,作为调用您在对话框构建器 API 中为每个按钮分配的点击处理程序的过程的一部分。

    解决此问题的一种方法是通过在布局中设置您自己的按钮,而不是使用由对话框构建器方法创建的按钮,来制作一个没有关闭行为的自定义对话框布局。然后在您自己的按钮的单击处理程序中,只需显示第二个对话框而不关闭第一个对话框。 http://developer.android.com/guide/topics/ui/dialogs.html#CustomDialog

    【讨论】:

      【解决方案2】:

      正如一位回复所提到的,您无法使用标准对话框执行此操作。但是您可以通过使第一个对话框成为一个样式看起来像对话框的活动,而第二个实际上是一个对话框来做到这一点。 只需在布局中设置活动的主题,如下所示:

      <activity android:theme="@android:style/Theme.Dialog">
      

      请参阅有关制作看起来像对话框的活动的主题。 https://stackoverflow.com/a/1979631/602661

      【讨论】:

        【解决方案3】:

        从内部关闭对话框。

        编辑,这里有一些更清晰的代码。

            alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                    return;
                }
            });
            alertDialog.show();
        

        【讨论】:

        • 不确定我是否理解这一点,我的 setButton 逻辑通常在构建器中
        【解决方案4】:

        您应该在内部使用您的自定义布局一个视图/按钮,并基于此视图/按钮单击您可以创建另一个 dailog 而无需取消第一个,如果您使用 builder.setNegativeButton 或 builder.setPositiveButton 您当前的对话框将关闭,我的工作代码就像,

        AlertDialog.Builder builder = new AlertDialog.Builder(ActivityAppImages.this,R.style.your_style);
        LayoutInflater inflater = getLayoutInflater();    
        View dialoglayout = inflater.inflate(R.layout.your_custom_layout, null);
        
        final Button mButtonCreateOtherDailog = (Button)dialoglayout.findViewById(R.id.txt_create_second_dailog);
            mTextView.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    //create your other dailog here
                }
            });
        
        builder.setView(dialoglayout);
        builder.show();
        

        【讨论】:

          猜你喜欢
          • 2011-08-05
          • 1970-01-01
          • 2017-04-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多