首页 > 其他分享 >Android开发 - DialogFragment 类解析

Android开发 - DialogFragment 类解析

时间:2024-08-06 09:56:12浏览次数:16  
标签:对话框 public 导入 import Android 解析 android DialogFragment

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");
                }
            });
        }
    }
    
  • 以上创建显示一个对话框,并处理对话框的按钮点击事件

标签:对话框,public,导入,import,Android,解析,android,DialogFragment
From: https://www.cnblogs.com/ajunjava/p/18344566

相关文章

  • Androidstudio开发,ListView实现通讯录联系人列表( 四)
    文章目录1.涉及到的技术点2.发环境3.需求分析4.实现步骤5.代码实现全部过程6.效果图7.其它资料学习1.涉及到的技术点数据库SQLite的使用列表控件ListView的使用ListView事件监听适配器BaseAdapter的使用线性布局LinearLayoutCompat的使用2.发环境开发工具......
  • DyFusion:基于动态融合的交叉注意三维目标检测 论文解析
    目录概况创新点详解1、跨注意力动态融合 Cross-AttentionDynamicFusion(1)特征提取(2)体素特征编码(3)BEV特征提取(4)特征动态融合①线性变换②对Q(BEV特征)和K(图像特征)进行点积运算③Softmax运算④特征加权融合⑤将计算出来的特征与图像原特征进行连接 2、同步数......
  • 数据包络分析(DEA)深度解析:评估决策单元的综合效率
    文章目录DEA分析步骤与计算公式步骤1:确定决策单元(DMU)和变量步骤2:数据收集与标准化步骤3:选择合适的DEA模型步骤4:构建DEA模型步骤5:求解DEA模型步骤6:结果分析与解释步骤7:提出改进建议步骤8:敏感性分析实例分析结论数据包络分析(DEA)是一种衡量生产效率的非参数方法,它评估......
  • 【番外篇】Android Studio 中 Banner控件实现首页轮播图
    目录一、创建一个空项目二、导入依赖包,添加网络权限三、写布局文件四、写入Java代码完整的Java文件代码:完整的xml代码: 许多App首页都会有轮播图,下面来介绍一下AndroidStudio中如何用Banner控件完成轮播图的效果:一、创建一个空项目为了方便,这里我们把模块名命名......
  • Unity Gyro Camera ---- 传感器控制摄像头旋转 + 正北校准 (纯原生支持Android+IOS,无需
    UnityGyroCamera传感器控制摄像头旋转+正北校准纯原生支持Android+IOS,无需安装ARKit,ARCore等插件这篇文章主要介绍如何利用手机原生的传感器,控制摄像头的旋转,最终可以实现AR或者VR的摄像头旋转控制问题提出 虽然,目前有一些用手机传感器控制虚拟摄像头旋转的方案......
  • Bugku -----Web-----全题目解析 (二) 超详细步骤
    ————————————————————分割线———————————————————— 6.矛盾这一行从URL查询字符串中获取名为num的参数值,并将其赋值给$num变量。如果URL中没有提供num参数,或者参数值不是有效的字符串,则$num将被设置为空或者默认值。......
  • 影视模板首涂21套高收录模板:SEO优化全解析
    苹果CMS10影视模板首涂21套高收录模板:SEO优化全解析在数字化时代,影视内容的在线播放已成为主流,而一个优秀的影视网站模板则是吸引观众、提升用户体验的关键。苹果CMS10作为一款功能强大的内容管理系统,其影视模板的设计与SEO优化直接关系到网站的流量和排名。本文将详细介绍苹......
  • A092-Android自行车在线租借租赁系统
    【项目功能介绍】功能列表:本系统包含后台管理和前端app双端系统,本系统包含三个角色:管理员,员工,app用户。后台管理员的功能包含:登录,退出,自新车管理,添加自新车,修改自新车,禁用启用自新车;自新车车辆管理,添加自新车车辆,修改自新车车辆,启用禁用自新车车辆;订......
  • Netty技术全解析:ByteToMessageDecoder类深度解析
    ❃博主首页:「码到三十五」,同名公众号:「码到三十五」,wx号:「liwu0213」☠博主专栏:<mysql高手><elasticsearch高手><源码解读><java核心><面试攻关>♝博主的话:搬的每块砖,皆为峰峦之基;公众号搜索「码到三十五」关注这个爱发技术干货的coder,......
  • 《数据结构习题解析与实验指导_李冬梅,张琪编著》总结出的大纲
        下面大纲为《数据结构习题解析与实验指导_李冬梅,张琪编著》总结出的大纲,可装13学习下:          ......