`
zkh43javaeye
  • 浏览: 85894 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Dialog 2种显示方式

 
阅读更多

建议用onCreateDialog(int)和 showDialog(int)这种模式显示Dialog, 系统来管理dialog状态,第一次创建时候,调用 onCreateDialog(int),而 onPrepareDialog(int, Dialog)每次弹出都调用,用来动态改变dialog。

 

When you use this callback, the Android system automatically manages the state of each dialog and hooks them to the Activity, effectively making it the "owner" of each dialog.

 

When you want to show a dialog, call showDialog(int) and pass it an integer that uniquely identifies the dialog that you want to display.

When a dialog is requested for the first time, Android calls onCreateDialog(int) from your Activity, which is where you should instantiate the Dialog . This callback method is passed the same ID that you passed to showDialog(int) . After you create the Dialog, return the object at the end of the method.

Before the dialog is displayed, Android also calls the optional callback method onPrepareDialog(int, Dialog) . Define this method if you want to change any properties of the dialog each time it is opened. This method is called every time a dialog is opened, whereas onCreateDialog(int) is only called the very first time a dialog is opened. If you don't define onPrepareDialog() , then the dialog will remain the same as it was the previous time it was opened. This method is also passed the dialog's ID, along with the Dialog object you created in onCreateDialog() .

 

 

 

 

Example1:
public class ActivityMain extends Activity {
    private static final int DIALOG1 = 1;
    private static final int DIALOG2 = 2;
    private static final int DIALOG4 = 4;
    private static final int DIALOG3 = 3;

    @Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
        case DIALOG1:
            return buildDialog1(ActivityMain.this);
        case DIALOG2:
            return buildDialog2(ActivityMain.this);
        case DIALOG3:
            return buildDialog3(ActivityMain.this);
        case DIALOG4:
            return buildDialog4(ActivityMain.this);
        }
        return null;
    }

    protected void onPrepareDialog(int id, Dialog dialog) {
        if (id == DIALOG1) {
            setTitle("测试");
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.alert_dialog);

        Button button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                showDialog(DIALOG1);
            }
        });

        Button buttons2 = (Button) findViewById(R.id.buttons2);
        buttons2.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                showDialog(DIALOG2);
            }
        });

        Button button3 = (Button) findViewById(R.id.button3);
        button3.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                showDialog(DIALOG3);
            }
        });

        Button button4 = (Button) findViewById(R.id.button4);
        button4.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                showDialog(DIALOG4);
            }
        });
    }

    private Dialog buildDialog1(Context context) {
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setIcon(R.drawable.alert_dialog_icon);
        builder.setTitle(R.string.alert_dialog_two_buttons_title);
        builder.setPositiveButton(R.string.alert_dialog_ok,
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {

                        setTitle("点击了对话框上的确定按钮: " + whichButton);
                    }
                });
        builder.setNegativeButton(R.string.alert_dialog_cancel,
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {

                        setTitle("点击了对话框上的取消按钮: " + whichButton);
                    }
                });

        return builder.create();

    }

    private Dialog buildDialog2(Context context) {
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setIcon(R.drawable.alert_dialog_icon);
        builder.setTitle(R.string.alert_dialog_two_buttons_msg);
        builder.setMessage(R.string.alert_dialog_two_buttons2_msg);
        builder.setPositiveButton(R.string.alert_dialog_ok,
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {

                        setTitle("点击了对话框上的确定按钮: " + whichButton);
                    }
                });
        builder.setNeutralButton(R.string.alert_dialog_something,
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {

                        setTitle("点击了对话框上的进入详细按钮: " + whichButton);
                    }
                });
        builder.setNegativeButton(R.string.alert_dialog_cancel,
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {

                        setTitle("点击了对话框上的取消按钮: " + whichButton);
                    }
                });
        return builder.create();
    }

    private Dialog buildDialog3(Context context) {
        LayoutInflater inflater = LayoutInflater.from(this);
        final View textEntryView = inflater.inflate(
                R.layout.alert_dialog_text_entry, null);
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setIcon(R.drawable.alert_dialog_icon);
        builder.setTitle(R.string.alert_dialog_text_entry);
        builder.setView(textEntryView);
        builder.setPositiveButton(R.string.alert_dialog_ok,
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                        setTitle("点击了对话框上的确定按钮: " + whichButton);
                    }
                });
        builder.setNegativeButton(R.string.alert_dialog_cancel,
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                        setTitle("点击了对话框上的取消按钮: " + whichButton);
                    }
                });
        return builder.create();
    }

    private Dialog buildDialog4(Context context) {
        ProgressDialog dialog = new ProgressDialog(context);
        dialog.setTitle("正在下载歌曲");
        dialog.setMessage("请稍候……");
        return dialog;
    }
}

 

Example2:
public class EX03_17 extends Activity
{
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
  }
 
  public boolean onCreateOptionsMenu(Menu menu)
  {
    menu.add(0, 0, 0, R.string.app_about);
    menu.add(0, 1, 1, R.string.str_exit);
    return super.onCreateOptionsMenu(menu);
  }
 
  public boolean onOptionsItemSelected(MenuItem item)
  {
    super.onOptionsItemSelected(item);
    switch(item.getItemId())
    {
      case 0:
        openOptionsDialog();
        break;
      case 1:
        finish();
        break;
    }
    return true;
  }
 
  private void openOptionsDialog()
  {
    new AlertDialog.Builder(this)
    .setTitle(R.string.app_about)
    .setMessage(R.string.app_about_msg)
    .setPositiveButton(R.string.str_ok,
        new DialogInterface.OnClickListener()
        {
         public void onClick(DialogInterface dialoginterface, int i)
         {
         }
         }
        )
    .show();
  }
}

分享到:
评论

相关推荐

    Android自定义显示内容的Dialog

    这里我们将深入探讨两种实现自定义显示内容的Dialog的方法:继承Dialog和继承PopupWindow。 首先,我们来看继承Dialog的方式。Dialog是Android系统提供的一个内置组件,用于展示与用户交互的重要信息。要自定义...

    Android Dialog全屏显示、动画显示

    在Android开发中,自定义Dialog是一种常见的用户交互方式,它能提供更为丰富的界面和功能,以满足特定场景下的需求。本教程将详细讲解如何创建一个全屏显示且带有动画效果的自定义Dialog,并结合相机和图片选择的...

    Android五种显示Dialog的方法实现

    在Android开发中,Dialog是一种非常常见的用户界面组件,它用于在主界面之上显示临时信息或者进行简单的交互。本文将详细讲解五种不同的方法来在Android应用中实现Dialog,并结合源码进行解析。 1. **AlertDialog**...

    Android Dialog更改样式及显示位置

    2. 使用第三方库:例如`androidx.core.widget.TintEditText`库,它提供了一种更灵活的方式来控制Dialog的位置。 在压缩包文件`MyDialog`中,可能包含了一个示例项目,展示了如何实现上述自定义Dialog样式和位置的...

    Android dialog显示位置

    在Android开发中,Dialog是一种非常常见的用户界面组件,它用于向用户展示临时信息或进行简单的交互操作。对话框通常会浮现在应用主界面之上,但它的显示位置可以根据开发者的需求进行定制。本文将深入探讨如何在...

    Dialog显示放大图片

    在Android中,Dialog是一种特殊的窗口,它浮现在应用的主窗口之上,提供临时的信息或者交互。Dialog通常用于警告、确认或展示额外信息。为了创建一个自定义的Dialog,我们需要继承自`AppCompatDialogFragment`类,并...

    Dialog的正确使用方式

    在Android开发中,Dialog是一种非常常见的用户界面组件,它用于在主界面之上显示临时的通知或交互窗口,以向用户展示信息、请求确认或者提供选项。本篇将详细讲解如何正确使用Dialog及其规范模板,以及创建Dialog的...

    Andorid Dialog 九种形式

    在Android开发中,Dialog是一种非常重要的用户界面组件,它用于在主界面之上显示临时的通知或交互窗口,以向用户展示信息、请求输入或者确认操作。本文将深入探讨Android Dialog的九种常见形式,帮助开发者更好地...

    自定义Dialog 显示正在加载动画效果 progressDialog

    在Android开发中,自定义Dialog是一种常见的用户交互方式,它能提供更为丰富的界面展示和功能扩展,以满足特定的应用场景需求。本篇我们将深入探讨如何创建一个自定义的Dialog,使其在显示时不会使Activity背景变暗...

    android在dialog中显示二维码

    这个场景可以通过在Dialog组件中显示二维码来实现,提供一种简洁且不打扰用户主界面的方式。本文将深入讲解如何在Android的Dialog中生成并显示二维码,以及如何处理点击Dialog外部以关闭Dialog的事件。 首先,我们...

    Dialog2.zip

    在Android应用开发中,Dialog是一种常见的用户交互组件,它用于在主界面之上显示一个小窗口,向用户展示信息或请求操作。本教程将深入探讨如何利用Android SDK中的Dialog类及其子类,结合自定义布局,创建功能强大且...

    dialog控件的位置

    在Android开发中,`Dialog`控件是一种非常常见的用户界面元素,它用于显示临时信息或者进行简单的交互操作。当我们需要将一个`Dialog`显示在某个特定控件下方时,这涉及到对话框的位置调整和布局管理。本文将深入...

    Android Dialog与软键盘的正确打开方式

    在Android开发中,Dialog是一种常见的用户交互界面,用于显示临时信息或者进行简单的用户操作。而软键盘的管理和显示则是移动应用用户体验的关键因素之一。本文将深入探讨如何在Android中正确处理Dialog与软键盘的...

    Android端5种显示dialog方法源码

    DialogFragment是Android支持库中的一个类,它继承自Fragment,提供了一种更灵活的方式来管理Dialog。这种方式可以让Dialog与Activity解耦,更容易处理生命周期问题: ```java public class CustomDialogFragment...

    dialog的7种方式

    在这个主题中,我们将深入探讨"dialog的7种方式",并结合源代码的说明来理解它们各自的应用和实现。 1. **警告对话框(Alert Dialog)** 警告对话框通常用于通知用户关于潜在的危险操作或需要确认的信息。它通常...

    Android-dialog库可以在任意类内调用子线程或ui线程内均可显示

    标题提到的“Android-dialog库”是Android开发中的一个第三方库,它提供了一种灵活的方式,使得开发者能够在任意类中方便地调用Dialog,并且支持在子线程或UI线程内显示,这极大地提高了代码的可复用性和执行效率。...

    Android自定义Dialog显示GridView

    在Android开发中,自定义Dialog是一种常见的需求,它允许开发者为用户提供更为个性化和交互丰富的界面。本主题将深入探讨如何创建一个自定义Dialog,并在其中显示一个GridView,以实现更灵活的数据展示。以下是对这...

    qml 用item自定义dialog 对话框

    QML提供了一种声明式编程方式,使得通过`Item`来构建自定义对话框变得简单而直观。本文将深入探讨如何使用QML中的`Item`来创建一个自定义的`Dialog`组件。 首先,了解`Dialog`的基本概念。在Qt Quick中,`Dialog`是...

    半透明dialog从左往右滑动显示

    在Android中,Dialog是一种浮动窗口,它覆盖在Activity之上,但并不完全填充整个屏幕,通常用于显示一些额外信息或与用户进行交互。为了创建一个自定义的半透明Dialog,我们需要自定义一个DialogFragment,因为...

    wheelview 在popwindow和dialog上的显示,仿ios时间控件

    `Dialog`则是另一种常见的显示额外信息的方式,它通常以半透明背景覆盖整个Activity,突出显示对话框内的内容。在这个项目中,WheelView可能被集成到自定义的Dialog中,用于创建一种更加正式的日期选择场景,比如...

Global site tag (gtag.js) - Google Analytics