Android学习笔记 Dialog

## Android Dialog 基础用法

Dialog 类是对话框的基类,但应该避免直接实例化 Dialog,而应使用其子类,比如 `AlertDialog`。此类对话框可以显示标题、提示信息、按钮、可选择项列表或自定义布局等。另外还有 `DatePickerDialog` 或 `TimePickerDialog` 这样的类,它们带有允许用户选择日期或时间的预定义 UI。这些类定义了对话框的样式和结构,但开发者应该将 `DialogFragment` 用作对话框的容器。`DialogFragment` 类提供了创建对话框和管理其外观所需的所有控件,而不是调用 Dialog 对象上的方法。使用 `DialogFragment` 管理对话框可以确保它能正确处理生命周期事件,如用户按“返回”按钮或旋转屏幕时。此外,`DialogFragment` 类还允许将对话框的 UI 作为嵌入式组件在较大 UI 中重复使用,就像传统 Fragment 一样 [#1](https://blog.csdn.net/qq_43567345/article/details/104237171)。

### 创建 DialogFragment

创建 DialogFragment 的基本步骤如下:

1. 扩展 `DialogFragment` 类并在 `onCreateDialog()` 回调方法中创建 `AlertDialog`。例如:

```java
public class MyDialogFragment extends DialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle("title")
               .setMessage("message")
               .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       // do something
                   }
               })
               .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       // do something
                   }
               });
        return builder.create();
    }
}
```

2. 创建此类的实例并调用该对象上的 `show()` 方法,即可显示出对话框。

```java
MyDialogFragment myDialogFragment = new MyDialogFragment();
myDialogFragment.show(getSupportFragmentManager(), "tag");
```

这是 `DialogFragment` 的基础用法,下面将介绍一些不同样式的对话框 [#1](https://blog.csdn.net/qq_43567345/article/details/104237171)。

## 包含两个按钮的对话框

创建包含两个按钮的对话框,只需要在 `onCreateDialog()` 方法中添加相应的按钮即可。例如:

```java
public class MyDialogFragment extends DialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle("title")
               .setMessage("message")
               .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       // do something
                   }
               })
               .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       // do something
                   }
               })
               .setNeutralButton("中立", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       // do something
                   }
               });
        return builder.create();
    }
}
```

这样就创建了一个包含三个按钮的对话框,其中一个是中立按钮 [#1](https://blog.csdn.net/qq_43567345/article/details/104237171)。

## 自定义输入对话框

如果你需要让用户输入某些信息,可以使用 `AlertDialog.Builder` 的 `setView()` 方法来添加自定义的输入控件。例如:

```java
public void CustomEditTextDialog(View view) {
    AlertDialog.Builder builder = new AlertDialog.Builder(this, android.R.style.Theme_Material_Light_Dialog_Alert);
    View Tittleview = getLayoutInflater().inflate(R.layout.dialog_custom_layout, null);
    ImageView img2 = (ImageView) Tittleview.findViewById(R.id.img2);
    builder.setView(Tittleview);
    AlertDialog dialog = builder.create();
    dialog.show();
}
```

在这个例子中,`R.layout.dialog_custom_layout` 是自定义的布局文件,`img2` 是这个布局中的一个 ImageView

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/725416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文本溢出隐藏 显示省略号,鼠标悬浮展示 el-tooltip(TooltipIsShowMixin封装)

目录 mixins 封装使用 TooltipIsShowMixin效果展示 mixins 封装 TooltipIsShowMixin.js export const TooltipIsShowMixin {data() {return {tooltipIsShow: false}},methods: {tooltipIsDisHandler(className) {this.$nextTick(() > {const dom document.querySelector…

golang 糟糕的错误处理

关于golang的糟糕错误处理,我持反对意见,因此写个博客记录一下 golang的书中说:像下面代码一样,创建一个布尔型变量用于测试错误条件是多余的: 然而在个人看来,代码非常完美,言简意赅&#xff0…

PDF处理控件aspose.PDF功能演示:将 PDF 转换为 Word 文档

在 Web 应用程序中处理文档时,将 PDF 文件无缝转换为 Word 文档的能力是一项宝贵的资产。此任务不仅常见,而且对于文档转换器和编辑器、从编辑和协作到内容提取的各种应用程序来说也是必不可少的。在这篇博文中,我们将探讨如何使用 JavaScrip…

算法中常用知识

定义大值和小值 NT_MIN在标准头文件limits.h中定义。 #define INT_MAX 2147483647 #define INT_MIN (-INT_MAX - 1) int ans INT_MIN;在C/C语言中,不能够直接使用-2147483648来代替最小负数,因为这不是一个数字,而是一个表达式。表达式的意…

JVM性能优化之--JIT即时编译

如果我们想将源Java文件运行,需要进行如下步骤: 使用类加载器将Java文件实时编译成class文件,也就是字节码指令使用JVM将编译后的字节码指令,解释为机器码,这是计算机可以直接执行的指令计算机直接执行 但是这其中由…

挑战杯 基于深度学习的植物识别算法 - cnn opencv python

文章目录 0 前言1 课题背景2 具体实现3 数据收集和处理3 MobileNetV2网络4 损失函数softmax 交叉熵4.1 softmax函数4.2 交叉熵损失函数 5 优化器SGD6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习的植物识别算法 ** …

预览和真机调试无法连接服务器(报网络错误),开发者工具可以正常用

预览和真机调试无法连接服务器(报网络错误),开发者工具可以正常用 方法: localhost替换为下面的ip,手机和电脑都链接同一个wifi // let RootPath http://127.0.0.1:8081;//或者http://localhost:8081let RootPath ht…

CSS:让动画流畅生动的缓动函数

在CSS中&#xff0c;可以使用transition属性或者keyframes关键帧动画来创建动画效果。 使用缓动函数则可以让动画更加流畅和生动。 div {transition: <property> <duration> <timing-function> <delay>; }div {animation: <keyframes-name> &l…

CSS、less、Sass、Scss、Stylus的认识

Sass、Scss、Less和Stylus区别总结_stylus scss-CSDN博客

鸿蒙Harmony应用开发—ArkTS声明式开发(事件独占控制)

设置组件是否独占事件&#xff0c;事件范围包括组件自带的事件和开发者自定义的点击、触摸、手势事件。 在一个窗口内&#xff0c;设置了独占控制的组件上的事件如果首先响应&#xff0c;则本次交互只允许此组件上设置的事件响应&#xff0c;窗口内其他组件上的事件不会响应。 …

AndroidStudio连不上adb报错ADB Connection Error

之前笔者一直通过AndroidStudio来看日志&#xff0c;也一直用的一套自己的SDK&#xff0c;用了好几年了。 但是突然有一天&#xff0c;AndroidStudio启动后就弹出警告窗&#xff1a;ADB Connection Error&#xff0c;如下&#xff1a; 在Event Log面板还持续性的输出&#x…

想在Vue中使用v-for来循环遍历一组对象,但只循环三次

想在Vue中使用v-for来循环遍历一组对象&#xff0c;但只想循环三次&#xff0c;你可以通过一些方法来达到这个目的。下面是一些建议的方法&#xff1a; 1. 使用数组的切片方法 如果你的对象是在一个数组中&#xff0c;你可以使用数组的slice()方法来只取数组的前三个元素。 v…

C++——string类

前言&#xff1a;哈喽小伙伴们&#xff0c;从这篇文章开始我们将进行若干个C中的重要的类容器的学习。本篇文章将讲解第一个类容器——string。 目录 一.什么是string类 二.string类常见接口 1.string类对象的常见构造 2.string类对象的容量操作 3. string类对象的访问及遍…

微软亚太区AI智能应用创新业务负责人许豪,将出席“ISIG-AIGC技术与应用发展峰会”

3月16日&#xff0c;第四届「ISIG中国产业智能大会」将在上海中庚聚龙酒店拉开序幕。本届大会由苏州市金融科技协会指导&#xff0c;企智未来科技&#xff08;AIGC开放社区、RPA中国、LowCode低码时代&#xff09;主办。大会旨在聚合每一位产业成员的力量&#xff0c;深入探索A…

16 PyTorch 神经网络基础【李沐动手学深度学习v2】

1. 模型构造 在构造自定义块之前&#xff0c;我们先回顾一下多层感知机的代码。 下面的代码生成一个网络&#xff0c;其中包含一个具有256个单元和ReLU激活函数的全连接隐藏层&#xff0c; 然后是一个具有10个隐藏单元且不带激活函数的全连接输出层。 层和块 构造单层神经网咯…

智慧安防视频远程监控平台EasyCVR集成后播放只有一帧画面是什么原因?

智慧安防视频监控平台EasyCVR能在复杂的网络环境中&#xff08;专网、局域网、广域网、VPN、公网等&#xff09;将前端海量的设备进行统一集中接入与视频汇聚管理&#xff0c;平台可支持的接入协议包括&#xff1a;国标GB28181、RTSP/Onvif、RTMP&#xff0c;以及厂家的私有协议…

【Power Apps】实现一个响应式的对话框功能

在我们开始之前需要把这里关一下&#xff0c;不然的话会影响响应式布局的效果。 首先我们添加一个垂直容器作为遮罩层。 遮罩层的宽高直接设置为跟随父元素即可&#xff0c;让遮罩层占满整个屏幕&#xff0c;再把填充色改为有一定透明度的黑色&#xff0c;形成遮罩效果。 然后…

远程-debug

java -Xdebug -Xrunjdwp:transportdt_socket,servery,suspendy,address8888 -jar app.jar --server.port2023 & java项目如何远程Debug调试

C# 的一些好用的语法糖介绍

C# 中有很多语法糖&#xff08;Syntactic sugar&#xff09;&#xff0c;它们是一些语言特性&#xff0c;使得编写代码更加简洁、易读、更具表现力。 Lambda 表达式&#xff1a; Lambda 表达式允许你编写简洁的匿名函数。例如&#xff1a; Func<int, int, int> add (a,…

论文翻译 - Visual Adversarial Examples Jailbreak Large Language Models

论文链接&#xff1a;https://arxiv.org/pdf/2306.13213.pdf Visual Adversarial Examples Jailbreak Aligned Large Language Models Abstract1 Introduction2 Related Work3 Adversarial Examples as Jailbreakers3.1 Setup3.2 Our Attack3.3 Implementations of Attackers …