对话框封装类(普通对话框,列表对话框,单选按钮对话框,复选对话框)

本文介绍了一个封装类,用于创建不同类型的对话框,包括普通对话框、列表对话框、单选按钮对话框和复选对话框,并通过一个主活动类展示了如何在实际应用中使用这些对话框。实例包括文本输入、按钮点击事件和监听器的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


//对话框工具类DialogTool代码如下:对话框封装类(普通对话框,列表对话框,单选按钮对话框,复选对话框)

public class DialogTool {
    /**
     * 创建普通对话框
     * 
     * @param ctx 上下文 必填
     * @param iconId 图标,如:R.drawable.icon 必填
     * @param title 标题 必填
     * @param message 显示内容 必填
     * @param btnName 按钮名称 必填
     * @param listener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填
     * @return
     */
 public static Dialog createNormalDialog(Context ctx, 
   int iconId, 
   String title, 
   String message, 
   String btnName, 
   OnClickListener listener) {
  Dialog dialog=null;
  android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(ctx);
  // 设置对话框的图标
  builder.setIcon(iconId);
  // 设置对话框的标题
  builder.setTitle(title);
  // 设置对话框的显示内容
  builder.setMessage(message);
  // 添加按钮,android.content.DialogInterface.OnClickListener.OnClickListener
  builder.setPositiveButton(btnName, listener);
  // 创建一个普通对话框
  dialog = builder.create();
  return dialog;
 }
  
  
    /**
     * 创建列表对话框
     * 
     * @param ctx 上下文 必填
     * @param iconId 图标,如:R.drawable.icon 必填
     * @param title 标题 必填
     * @param itemsId 字符串数组资源id 必填
     * @param listener 监听器,需实现android.content.DialogInterface.OnClickListener接口 必填
     * @return
     */
 public static Dialog createListDialog(Context ctx, 
   int iconId, 
   String title, 
   int itemsId, 
   OnClickListener listener) {
  Dialog dialog=null;
  android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(ctx);
  // 设置对话框的图标
  builder.setIcon(iconId);
  // 设置对话框的标题
  builder.setTitle(title);
  // 添加按钮,android.content.DialogInterface.OnClickListener.OnClickListener
  builder.setItems(itemsId, listener);
  // 创建一个列表对话框
  dialog = builder.create();
  return dialog;
 }
  
    /**
     * 创建单选按钮对话框
     * 
     * @param ctx 上下文 必填
     * @param iconId 图标,如:R.drawable.icon 必填
     * @param title 标题 必填
     * @param itemsId 字符串数组资源id 必填
     * @param listener 单选按钮项监听器,需实现android.content.DialogInterface.OnClickListener接口 必填
     * @param btnName 按钮名称 必填
     * @param listener2 按钮监听器,需实现android.content.DialogInterface.OnClickListener接口 必填
     * @return
     */
 public static Dialog createRadioDialog(Context ctx, 
   int iconId, 
   String title, 
   int itemsId, 
   OnClickListener listener,
   String btnName,
   OnClickListener listener2) {
  Dialog dialog=null;
  android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(ctx);
  // 设置对话框的图标
  builder.setIcon(iconId);
  // 设置对话框的标题
  builder.setTitle(title);
  // 0: 默认第一个单选按钮被选中
  builder.setSingleChoiceItems(itemsId, 0, listener);
  // 添加一个按钮
  builder.setPositiveButton(btnName, listener2) ;
  // 创建一个单选按钮对话框
  dialog = builder.create();
  return dialog;
 }
  
  
    /**
     * 创建复选对话框
     * 
     * @param ctx 上下文 必填
     * @param iconId 图标,如:R.drawable.icon 必填
     * @param title 标题 必填
     * @param itemsId 字符串数组资源id 必填
     * @param flags 初始复选情况 必填
     * @param listener 单选按钮项监听器,需实现android.content.DialogInterface.OnMultiChoiceClickListener接口 必填
     * @param btnName 按钮名称 必填
     * @param listener2 按钮监听器,需实现android.content.DialogInterface.OnClickListener接口 必填
     * @return
     */
 public static Dialog createCheckBoxDialog(Context ctx, 
   int iconId, 
   String title, 
   int itemsId, 
   boolean[] flags,
   android.content.DialogInterface.OnMultiChoiceClickListener listener,
   String btnName,
   OnClickListener listener2) {
  Dialog dialog=null;
  android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(ctx);
  // 设置对话框的图标
  builder.setIcon(iconId);
  // 设置对话框的标题
  builder.setTitle(title);
  builder.setMultiChoiceItems(itemsId, flags, listener);
  // 添加一个按钮
  builder.setPositiveButton(btnName, listener2) ;
  // 创建一个复选对话框
  dialog = builder.create();
  return dialog;
 }
}



//MainActivity类代码如下:

package com.example.adialogproj;
import android.app.Activity;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private boolean[] flags = new boolean[] { false, true, false }; // 初始复选情况
private String[] items = null;


private EditText etText = null;
private Button btnNormal = null;
private Button btnList = null;
private Button btnRadio = null;
private Button btnCheckBox = null;


private static final int DIALOG_NORMAL = 0; // 普通对话框常量
private static final int DIALOG_LIST = 1; // 列表对话框常量
private static final int DIALOG_RADIO = 2; // 单选按钮对话框常量
private static final int DIALOG_CHECKBOX = 3; // 复选对话框常量


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
items = getResources().getStringArray(R.array.hobby);


etText = (EditText) findViewById(R.id.etText);
btnNormal = (Button) findViewById(R.id.btnNormal);
btnList = (Button) findViewById(R.id.btnList);
btnRadio = (Button) findViewById(R.id.btnRadio);
btnCheckBox = (Button) findViewById(R.id.btnCheckBox);
btnNormal.setOnClickListener(l);
btnList.setOnClickListener(l);
btnRadio.setOnClickListener(l);
btnCheckBox.setOnClickListener(l);


}


@Override
protected Dialog onCreateDialog(int id) {
Dialog dialog = null;
switch (id) {
case DIALOG_NORMAL: // 创建普通对话框
dialog = DialogTool.createNormalDialog(this,
R.drawable.ic_launcher, "普通对话框", "这是普通对话框中的内容!", " 确 定 ",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
etText.setText("这是普通对话框中的内容!");
return;
}
});
break;
case DIALOG_LIST: // 创建列表对话框
dialog = DialogTool.createListDialog(this, R.drawable.ic_launcher,
"列表对话框", R.array.hobby,
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String hoddy = getResources().getStringArray(
R.array.hobby)[which];
etText.setText("您选择了: " + hoddy);
return;
}
});
break;
case DIALOG_RADIO: // 创建单选按钮对话框
dialog = DialogTool.createRadioDialog(
this,
R.drawable.ic_launcher,
"单选按钮对话框",
R.array.hobby,
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String hoddy = getResources().getStringArray(
R.array.hobby)[which];
etText.setText("您选择了: " + hoddy);
return;
}
}, " 确 定 ",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "您按了确定按钮!",
Toast.LENGTH_LONG).show();
return;
}
});
break;
case DIALOG_CHECKBOX: // 创建复选框对话框
dialog = DialogTool.createCheckBoxDialog(this,
R.drawable.ic_launcher, "复选对话框", R.array.hobby, flags,
new DialogInterface.OnMultiChoiceClickListener() {
public void onClick(DialogInterface dialog, int which,
boolean isChecked) {
flags[which] = isChecked;
String result = "您选择了:";
for (int i = 0; i < flags.length; i++) {
if (flags[i]) {
result = result + items[i] + "、";
}
}
etText.setText(result.substring(0,
result.length() - 1));
}
}, " 确 认 ",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "您按了确定按钮!",
Toast.LENGTH_LONG).show();
return;
}
}


);
break;
}
return dialog;
}


// 按钮监听
View.OnClickListener l = new View.OnClickListener() {
@Override
public void onClick(View v) {
Button btn = (Button) v;
switch (btn.getId()) {
case R.id.btnNormal: // 普通对话框
// 显示对话框
showDialog(DIALOG_NORMAL);
break;
case R.id.btnList: // 列表对话框
// 显示对话框
showDialog(DIALOG_LIST);
break;
case R.id.btnRadio: // 单选按钮对话框
// 显示对话框
showDialog(DIALOG_RADIO);
break;
case R.id.btnCheckBox: // 复选对话框
// 显示对话框
showDialog(DIALOG_CHECKBOX);
break;
}
}
};
}

arrays.xml代码如下:

<?xml version="1.0" encoding="utf-8"?>
<!-- 
resources的使用 
 
resoureces就是res目录下的那些目录和文件,常用的有: 
res/drawable/ 用来存放图片文件 
res/layout/ 用来存放布局定义文件 
res/values/ 用来存放一些变量、参数等文件
-->
<resources>
 <string-array name="hobby">
  <item>游泳</item>
  <item>打篮球</item>
  <item>登山</item>
 </string-array>
</resources>


//布局文件layout代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <EditText android:text=""
        android:id="@+id/etText"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:editable="false"
        android:cursorVisible="false" />
    <Button android:text="显示普通对话框"
        android:id="@+id/btnNormal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
    <Button android:text="显示列表话框"
        android:id="@+id/btnList"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
    <Button android:text="显示单选按钮对话框"
        android:id="@+id/btnRadio"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
    <Button android:text="显示复选对话框"
        android:id="@+id/btnCheckBox"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值