AlertDialog类的功能十分强大,它不仅可以生成带按钮的提示对话框,还可以生成带列表的列表对话框。概括起来有以下4种:
1. 带确定、中立和取消等N个按钮的提示对话框,其中的按钮个数不是固定的,可以根据需要添加。例如,不需要中立按钮,则可以只生成带有确定和取消按钮的对话框,也可以是只需有一个按钮的对话框。
2. 带列表的列表对话框
3. 带多个单选列表项和N个按钮的列表对话框
4. 带多个多选列表项和N个按钮的列表对话框
在使用AlertDialog类生成对话框时,常用的方法如下所示:
- setTitle:为对话框设置标题
- setIcon:为对话框设置图标
- setMessage:为对话框设置内容
- setButton:用于为提示对话框添加按钮,可以是取消按钮、中立按钮和确定按钮。需要通过为其指定int类型的whichButton参数实现,其参数可以是DialogInterface.BUTTON_POSITIVE(确定按钮)、BUTTON_NEGATIVE(取消按钮)或者BUTTON_NEUTRAL(中立按钮)。
通常情况下,使用AlertDialog类只能生成带N个按钮的提示对话框,要生成另外3种列表对话框,需要使用AlertDialog.Builder类。AlertDialog.Builder类提供的常用方法如下表:
- setTitle:为对话框设置标题
- setIcon:为对话框设置图标
- setMessage:为对话框设置内容
- setView:给对话框设置自定义样式
- setItems:设置对话框要显示的一个list,一般用于显示几个命令时
- setSingleChoiceItems:用来设置对话框显示一系列的单选框
- setMultiChoiceItems:用来设置对话框显示一系列的复选框
- setNeutralButton:普通按钮
- setPositiveButton:给对话框添加"Yes"按钮
- setNegativeButton:对话框添加"No"按钮
- create:创建对话框
- show:显示对话框
下面通过一个具体的实例说明如何使用AlertDialog类生成提示对话框和各种列表对话框。首先在res/layout/main.xml文件中定义布局文件:
以下是重构后的代码:
```xml
android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/layout1" android:gravity="center_horizontal">
```
以下是一个示例代码,用于在 Android 应用程序中创建一个名为 "MainActivity" 的类。该类包含在一个名为 "com.example.myapplication" 的包中。
```java
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); // 设置布局文件为 activity_main.xml
}
}
```
请注意,上述示例代码中的 `androidx.appcompat.app.AppCompatActivity` 是 Android Jetpack SDK 中的一个类,它提供了一些基本的 Activity 功能和兼容性支持。在实际开发中,你可能需要根据自己的需求进行适当的修改和调整。
```java
package com.example.test;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
private boolean[] checkedItems; //记录各个列表项的状态
private String[] items; //各列表项要显示的内容
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
AlertDialog alert = new AlertDialog.Builder(MainActivity.this).create();
alert.setIcon(R.drawable.ic_launcher); //设置对话框的图标
alert.setTitle("系统提示"); //设置对话框的标题
alert.setMessage("显示带取消、中立和确定按钮的对话框!"); //设置对话框显示的内容
//添加“取消”按钮
alert.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "您单击了取消按钮", Toast.LENGTH_SHORT).show();
}
});
//添加“确定”按钮
alert.setButton(DialogInterface.BUTTON_POSITIVE, "确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "您单击了确定按钮", Toast.LENGTH_SHORT).show();
}
});
//添加“中立”按钮
alert.setButton(DialogInterface.BUTTON_NEUTRAL, "中立", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "您单击了中立按钮", Toast.LENGTH_SHORT).show();
}
});
alert.show(); //显示对话框
}
});
}
//其他方法省略,与上面相同,不再重复展示。
我很抱歉,但您没有提供任何可以重构和重塑的具体内容。我需要了解更多的背景信息才能帮助你。例如,你希望重构的是什么样的内容?是文本、图片、视频还是其他的某种格式?这些按钮又代表什么功能?请提供更多的详细信息,以便我能提供一个更具体的帮助。