Android详细的对话框AlertDialog.Builder使用方法

Android一共有三种形式的菜单:
1.选项菜单(optinosMenu)
2.上下文菜单(ContextMenu)
3.子菜单(subMenu)
其中最常用的就是选项菜单(optionsMenu), 该菜单在点击 menu 按键 后会在对应的Activity底部显示出来。

1.Activity菜单机制 (与dialog类似)
Activity有一套机制来实现对菜单的管理,方法如下:
1.1.public boolean onCreateOptionsMenu(Menu menu)
此方法用于初始化菜单,其中menu参数就是即将要显示的Menu实例。
返回true则显示该menu,false 则不显示;
(只会在第一次初始化菜单时调用)

1.2.public boolean onPrepareOptionsMenu(Menu menu)
在onCreateOptionsMenu执行后,菜单被显示前调用;如果菜单已经被创建,则在菜单显示前被调用。
同样的, 返回true则显示该menu,false 则不显示;
(可以通过此方法动态的改变菜单的状态,比如加载不同的菜单等)

1.3.public void onOptionsMenuClosed(Menu menu)
每次菜单被关闭时调用.
(菜单被关闭有三种情形,menu按钮被再次点击、back按钮被点击或者用户选择了某一个菜单项)

1.4.public boolean onOptionsItemSelected(MenuItem item)
菜单项被点击时调用,也就是菜单项的监听方法。

通过这几个方法,可以得知,对于Activity,同一时间只能显示和监听一个Menu 对象。

2. 添加菜单:
可以在onCreateOptionsMenu或者onPrepareOptionsMenu方法中来添加菜单

2.1代码添加:
menu.add((int groupId, int itemId, int order, charsequence title) .setIcon(drawable ID) 
add()方法的四个参数,依次是:  

1、组别,如果不分组的话就写Menu.NONE,  

2、Id,这个很重要,Android根据这个Id来确定不同的菜单  

3、顺序,哪个菜单项在前面由这个参数的大小决定  

4、文本,菜单项的显示文本

add()方法返回的是MenuItem对象,调用其setIcon()方法,为相应MenuItem设置Icon

示例:
public boolean onCreateOptionsMenu(Menu menu) {
 super.onCreateOptionsMenu(menu);
 menu.add(Menu.NONE, Menu.First+1, 0, "设置").setIcon(R.drawable.setting);
 return true;
}

2.2布局文件添加:

getMenuInflater().inflate(R.menu.options_menu, menu);

调用Activity的getMenuInflater()得到一个MenuInflater, 
使用inflate方法来把布局文件中的定义的菜单 加载给 第二个参数所对应的menu对象

示例:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
 super.onCreateOptionsMenu(menu);
 getMenuInflater().inflate(R.menu.options_menu, menu);
 return true;
}

布局文件:
在res目录下建立一个menu文件夹,并创建布局文件: options_menu.xml 
<?xml version="1.0" encoding="utf-8"?>



3.菜单项监听:

只要菜单中的菜单项被点击,都会触发onOptionsItemSelected(MenuItem item)
item参数即为被点击的菜单项,那么需要在此方法内判断哪个Item被点击了,从而实现不同的操作。
对于两种不同的添加菜单方法,判断的方法有一点区别,但本质是一样的。

3.1代码添加菜单的判断方法
@Override
public boolean onOptionsItemSelected(MenuItem item) {
 super.onOptionsItemSelected(item);
 switch(item.getItemId())//得到被点击的item的itemId
 {
 case Menu.First+1: //对应的ID就是在add方法中所设定的Id
  break;
 case Menu.First+2:
  break;
 }
 return true;
}

3.2布局文件添加菜单的判断方法:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
 super.onOptionsItemSelected(item);
 switch(item.getItemId())//得到被点击的item的itemId
 {
 case R.id.menu_setting://这里的Id就是布局文件中定义的Id,在用R.id.XXX的方法获取出来
  break;
 case R.id.menu_info:
  break;
 }
 return true;
}

4.最简单的应用:
在android中可以这样实现。

4.1弹出一个消息框:
new AlertDialog.Builder(this)
.setTitle("标题")
.setMessage("简单消息框")
.setPositiveButton("确定", null)
.show();

4.2带确认和取消按钮的对话框:
new AlertDialog.Builder(this)
.setTitle("确认")
.setMessage("确定吗?")
.setPositiveButton("是", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
setResult(RESULT_OK);
}})
.setNegativeButton("否", null)
.show();

4.3可以输入文本的对话框:
new AlertDialog.Builder(this)
.setTitle("请输入")
.setIcon(android.R.drawable.ic_dialog_info)
.setView(new EditText(this))
.setPositiveButton("确定", null)
.setNegativeButton("取消", null)
.show();

4.4单选框:
new AlertDialog.Builder(this)
.setTitle("单选框")
.setIcon(android.R.drawable.ic_dialog_info)
.setSingleChoiceItems(new String[] {"选项1","选项2","选项3","选项4"}, 0, new DialogInterface.OnClickListener() {
 public void onClick(DialogInterface dialog, int which) {
  dialog.dismiss();
 }
})
.setNegativeButton("取消", null)
.show();

4.5多选框:
new AlertDialog.Builder(this)
.setTitle("多选框")
.setMultiChoiceItems(new String[] {"选项1","选项2","选项3","选项4"}, null, null)
.setPositiveButton("确定", null)
.setNegativeButton("取消", null)
.show();

4.6列表对话框:
new AlertDialog.Builder(this)
.setTitle("列表框")
.setItems(new String[] {"列表项1","列表项2","列表项3"}, null)
.setNegativeButton("确定", null)
.show();

4.7图片对话框:
new AlertDialog.Builder(this)
.setTitle("图片框")
.setView(img)
.setPositiveButton("确定", null)
.show();

 
1.      定义布局文件:alertdialog_item.xml,因为列表的每一项的样式都是从布局文件设置的,注意的是布局文件是一个TextView <?xml version= "1.0" encoding= "utf-8"?> "http://schemas.android.com/apk/res/android"     android:id= "@+id/alertdialog_item"     android:layout_width= "fill_parent"   android:layout_height= "30dp"     android:layout_gravity= "center_horizontal"     android:gravity= "center_horizontal"     android:textColor= "#000000"     android:background="#668B8B"     android:textSize="28px" > 2.      设置AlertDialog的总体样式,比如说割线的高度,这时候在style.xml配置            5dp         100dp     3.      在Activity上设置相应的AlertDialog    String[] menu_names =new String[]{"进入","取消","删除","删除全部"};     AlertDialog.Builder builder  = new AlertDialog.Builder(new ContextThemeWrapper(this,R.style.AlertDialogCustom));     builder.setAdapter(newArrayAdapter(WeiXunListActivity.this, R.layout.alertdialog_item,menu_names),null);     builder.create().show(); 4.      显示效果如下

 

 

Android的AlertDialog详解
2012-05-16 14:02:41      我来说两句      
收藏    我要投稿

AlertDialog的构造方法全部是Protected的,所以不能直接通过new一个AlertDialog来创建出一个AlertDialog。

要创建一个AlertDialog,就要用到AlertDialog.Builder中的create()方法。

使用AlertDialog.Builder创建对话框需要了解以下几个方法:

setTitle :为对话框设置标题
setIcon :为对话框设置图标
setMessage:为对话框设置内容
setView : 给对话框设置自定义样式
setItems :设置对话框要显示的一个list,一般用于显示几个命令时
setMultiChoiceItems :用来设置对话框显示一系列的复选框
setNeutralButton    :普通按钮

setPositiveButton   :给对话框添加"Yes"按钮
setNegativeButton :对话框添加"No"按钮
create : 创建对话框
show :显示对话框
一、简单的AlertDialog

下面,创建一个简单的ALertDialog并显示它:


[java]  package com.tianjf; 
 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.Dialog; 
import android.os.Bundle; 
 
public class Dialog_AlertDialogDemoActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
 
        Dialog alertDialog = new AlertDialog.Builder(this). 
                setTitle("对话框的标题"). 
                setMessage("对话框的内容"). 
                setIcon(R.drawable.ic_launcher). 
                create(); 
        alertDialog.show(); 
    } 

package com.tianjf;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.os.Bundle;

public class Dialog_AlertDialogDemoActivity extends Activity {
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  Dialog alertDialog = new AlertDialog.Builder(this).
    setTitle("对话框的标题").
    setMessage("对话框的内容").
    setIcon(R.drawable.ic_launcher).
    create();
  alertDialog.show();
 }
}运行结果如下:

 

 

更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. Python list sort方法的具体使用
  3. python list.sort()根据多个关键字排序的方法实现
  4. android上一些方法的区别和用法的注意事项
  5. android实现字体闪烁动画的方法
  6. Android中dispatchDraw分析
  7. Android四大基本组件介绍与生命周期
  8. Android(安卓)MediaPlayer 常用方法介绍
  9. Android之菜单总结

随机推荐

  1. Android CheckBox
  2. Android TextView文字过多时,通过滚动条显
  3. Android(安卓)UI开发第十八篇――Activit
  4. Android 通过WebView 调用Js sqlite数据
  5. android各组件详解
  6. 初学Android,五大布局对象(六)
  7. 安装android时提示The operation cannot
  8. gprs便捷开关 android之widget应用
  9. GridView显示ICON和TEXT
  10. 学习笔记-Android Gallery实现