DialogFragment 是什么
- DialogFragment 是一种用于显示对话框的工具,同时它也是一个抽象类。在Android应用中,对话框是一种小窗口,通常用于显示重要信息或提示用户进行某些操作。通过使用 DialogFragment,我们可以在应用中方便地显示和管理对话框
DialogFragment 的好处
- 使用 DialogFragment 可以更好地处理对话框在屏幕旋转等配置变化时的状态,不会因为配置变化导致对话框消失或重建。它还可以更方便地在其他Fragment窗口中显示对话框
DialogFragment 的使用
-
创建主布局文件:
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" <!-- 布局宽度充满父视图 --> android:layout_height="match_parent"> <!-- 布局高度充满父视图 --> <!-- 按钮,位于父视图的中心 --> <Button android:id="@+id/show_dialog_button" <!-- 按钮的 ID --> android:layout_width="wrap_content" <!-- 按钮的宽度自适应内容 --> android:layout_height="wrap_content" <!-- 按钮的高度自适应内容 --> android:text="显示对话框" <!-- 按钮上的文字 --> android:layout_centerInParent="true"/> <!-- 按钮在父视图中居中 --> </RelativeLayout>
-
创建 DialogFragment 类:
MyDialogFragment.java
import android.app.Dialog; // 导入 Dialog 类 import android.content.DialogInterface; // 导入 DialogInterface 类 import android.os.Bundle; // 导入 Bundle 类 import androidx.annotation.NonNull; // 导入 NonNull 注解 import androidx.annotation.Nullable; // 导入 Nullable 注解 import androidx.appcompat.app.AlertDialog; // 导入 AlertDialog 类 import androidx.fragment.app.DialogFragment; // 导入 DialogFragment 类 // 创建一个继承自 DialogFragment 的类 public class MyDialogFragment extends DialogFragment { // 重写 onCreateDialog 方法,创建对话框 @NonNull @Override public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { // 创建一个 AlertDialog.Builder 实例,使用带 AppCompat 主题的上下文: // 如果DialogFragment的父类非Activity(),而是Fragment,那么我们单使用requireActivity()的上下文就行不通了,必须要加入第二个参数R.style.Theme_AppCompat_Dialog_Alert强行调用AppCompat主活动的主题 AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity()/*, R.style.Theme_AppCompat_Dialog_Alert*/); // 设置对话框的标题 builder.setTitle("提示") // 设置对话框的消息 .setMessage("这是一个简单的对话框") // 设置“确定”按钮及其点击事件 .setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // 这里处理点击“确定”按钮的逻辑 } }) // 设置“取消”按钮及其点击事件 .setNegativeButton("取消", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // 点击“取消”按钮时关闭对话框 dialog.dismiss(); } }); // 返回创建的对话框 return builder.create(); } }
-
启动类
import android.os.Bundle; // 导入 Bundle 类 import android.view.View; // 导入 View 类 import android.widget.Button; // 导入 Button 类 import androidx.appcompat.app.AppCompatActivity; // 导入 AppCompatActivity 类 // 创建主活动类,继承自 AppCompatActivity public class MainActivity extends AppCompatActivity { // 重写 onCreate 方法 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 设置活动的内容视图 setContentView(R.layout.activity_main); // 获取布局中的按钮 Button showDialogButton = findViewById(R.id.show_dialog_button); // 设置按钮的点击事件监听器 showDialogButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 创建 MyDialogFragment 实例 MyDialogFragment dialogFragment = new MyDialogFragment(); // 显示对话框 dialogFragment.show(getSupportFragmentManager(), "MyDialogFragment"); } }); } }
-
以上创建和显示一个对话框,并处理对话框的按钮点击事件