- 浏览: 85894 次
- 性别:
- 来自: 成都
最新评论
建议用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背景选择器selector用法汇总
2011-04-27 15:23 1356原址:http://blog.sina.com.cn/s/bl ... -
(转)编写Android自定义按钮
2011-04-27 11:07 1216原址:http://marshal.easymorse.com ... -
(转)android button 效果设计
2011-04-26 15:04 1405原址:http://ssd910.blog.163.com/b ... -
(转)消息机制细谈(message handler looper MessageQueue )
2011-04-12 11:20 1066在handler的简单用 ... -
解决:sqlite数据库含有\n的值或者sax解析xml有\n的值付给TextView,显示却不会换行
2011-03-17 23:00 2953遇到个问题,网上也有人问 从sqlite数据库取含有\n的值 ... -
资料分享 android api dev guid中文(Android开发指南中文版.doc)
2011-03-11 14:12 1449资料分享 android api dev guid中文 ... -
apk反编译问题总结(转)
2011-03-09 15:01 2779http://www.eoeandroid.com/thre ... -
PendingIntent和Intent的区别 转
2011-03-04 14:35 1244Notification notification ... -
转:动态添加/删除spinner菜单--ArrlayList与Widget依赖性
2011-02-24 14:28 1762package irdc.ex04_09; import a ... -
【转】 Array ,Simple ,SimpleCursor Adapter 区别
2011-02-12 16:01 1835原址:http://www.eoeandroid.com ... -
转 【通知 Toast详细用法(显示view)】 【android Toast大全(五种情形)建立属于你自己的Toast】
2011-02-11 10:36 3064原文地址: http://www.pocketdigi. ... -
(转 Android UI学习 - Menu)
2011-02-09 14:19 1376标签:Android menu 原创作品,允许转载,转载时 ...
相关推荐
这里我们将深入探讨两种实现自定义显示内容的Dialog的方法:继承Dialog和继承PopupWindow。 首先,我们来看继承Dialog的方式。Dialog是Android系统提供的一个内置组件,用于展示与用户交互的重要信息。要自定义...
在Android开发中,自定义Dialog是一种常见的用户交互方式,它能提供更为丰富的界面和功能,以满足特定场景下的需求。本教程将详细讲解如何创建一个全屏显示且带有动画效果的自定义Dialog,并结合相机和图片选择的...
在Android开发中,Dialog是一种非常常见的用户界面组件,它用于在主界面之上显示临时信息或者进行简单的交互。本文将详细讲解五种不同的方法来在Android应用中实现Dialog,并结合源码进行解析。 1. **AlertDialog**...
2. 使用第三方库:例如`androidx.core.widget.TintEditText`库,它提供了一种更灵活的方式来控制Dialog的位置。 在压缩包文件`MyDialog`中,可能包含了一个示例项目,展示了如何实现上述自定义Dialog样式和位置的...
在Android开发中,Dialog是一种非常常见的用户界面组件,它用于向用户展示临时信息或进行简单的交互操作。对话框通常会浮现在应用主界面之上,但它的显示位置可以根据开发者的需求进行定制。本文将深入探讨如何在...
在Android中,Dialog是一种特殊的窗口,它浮现在应用的主窗口之上,提供临时的信息或者交互。Dialog通常用于警告、确认或展示额外信息。为了创建一个自定义的Dialog,我们需要继承自`AppCompatDialogFragment`类,并...
在Android开发中,Dialog是一种非常常见的用户界面组件,它用于在主界面之上显示临时的通知或交互窗口,以向用户展示信息、请求确认或者提供选项。本篇将详细讲解如何正确使用Dialog及其规范模板,以及创建Dialog的...
在Android开发中,Dialog是一种非常重要的用户界面组件,它用于在主界面之上显示临时的通知或交互窗口,以向用户展示信息、请求输入或者确认操作。本文将深入探讨Android Dialog的九种常见形式,帮助开发者更好地...
在Android开发中,自定义Dialog是一种常见的用户交互方式,它能提供更为丰富的界面展示和功能扩展,以满足特定的应用场景需求。本篇我们将深入探讨如何创建一个自定义的Dialog,使其在显示时不会使Activity背景变暗...
这个场景可以通过在Dialog组件中显示二维码来实现,提供一种简洁且不打扰用户主界面的方式。本文将深入讲解如何在Android的Dialog中生成并显示二维码,以及如何处理点击Dialog外部以关闭Dialog的事件。 首先,我们...
在Android应用开发中,Dialog是一种常见的用户交互组件,它用于在主界面之上显示一个小窗口,向用户展示信息或请求操作。本教程将深入探讨如何利用Android SDK中的Dialog类及其子类,结合自定义布局,创建功能强大且...
在Android开发中,`Dialog`控件是一种非常常见的用户界面元素,它用于显示临时信息或者进行简单的交互操作。当我们需要将一个`Dialog`显示在某个特定控件下方时,这涉及到对话框的位置调整和布局管理。本文将深入...
在Android开发中,Dialog是一种常见的用户交互界面,用于显示临时信息或者进行简单的用户操作。而软键盘的管理和显示则是移动应用用户体验的关键因素之一。本文将深入探讨如何在Android中正确处理Dialog与软键盘的...
DialogFragment是Android支持库中的一个类,它继承自Fragment,提供了一种更灵活的方式来管理Dialog。这种方式可以让Dialog与Activity解耦,更容易处理生命周期问题: ```java public class CustomDialogFragment...
在这个主题中,我们将深入探讨"dialog的7种方式",并结合源代码的说明来理解它们各自的应用和实现。 1. **警告对话框(Alert Dialog)** 警告对话框通常用于通知用户关于潜在的危险操作或需要确认的信息。它通常...
标题提到的“Android-dialog库”是Android开发中的一个第三方库,它提供了一种灵活的方式,使得开发者能够在任意类中方便地调用Dialog,并且支持在子线程或UI线程内显示,这极大地提高了代码的可复用性和执行效率。...
在Android开发中,自定义Dialog是一种常见的需求,它允许开发者为用户提供更为个性化和交互丰富的界面。本主题将深入探讨如何创建一个自定义Dialog,并在其中显示一个GridView,以实现更灵活的数据展示。以下是对这...
QML提供了一种声明式编程方式,使得通过`Item`来构建自定义对话框变得简单而直观。本文将深入探讨如何使用QML中的`Item`来创建一个自定义的`Dialog`组件。 首先,了解`Dialog`的基本概念。在Qt Quick中,`Dialog`是...
在Android中,Dialog是一种浮动窗口,它覆盖在Activity之上,但并不完全填充整个屏幕,通常用于显示一些额外信息或与用户进行交互。为了创建一个自定义的半透明Dialog,我们需要自定义一个DialogFragment,因为...
`Dialog`则是另一种常见的显示额外信息的方式,它通常以半透明背景覆盖整个Activity,突出显示对话框内的内容。在这个项目中,WheelView可能被集成到自定义的Dialog中,用于创建一种更加正式的日期选择场景,比如...