Android使用AlertDialog实现弹出菜单

news2025/2/23 16:55:24

最近又开始捣鼓APP,许多api , class都忘记怎么用了,楼下使用AlertDialog实现个弹出菜单,结果直接crash,查了半天,终于即将,记录一下……

1 实现代码

  AlertDialog.Builder mBuilder = new AlertDialog.Builder(mContext);//will be crash: android.content.res.Resources$NotFoundException: Resource ID #0x0
        mBuilder = new AlertDialog.Builder(this);
        //填充列表数据
        final String[] items = new String[]{"选项1", "选项2", "选项3"};
        mBuilder.setTitle("选择一项"); // 设置标题
        mBuilder.setItems(items, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(mContext, "clicked:"+ items[which], Toast.LENGTH_SHORT).show();
            }
        });

        mBtnApp6.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               // 创建并显示对话框
                mBuilder.create().show();//界面上mBtnApp6按钮点击后执行dialog显示

            }

        });

2 实现效果

在这里插入图片描述

3 增加数据项的效果

在这里插入图片描述

4 遇到的错误

  • android.content.res.Resources$NotFoundException: Resource ID #0x0
  • 原因:new AlertDialog.Builder(mContext) , crash
  •      或 new AlertDialog.Builder(getApplicationContext()) , crash
    
  • 解决办法:new AlertDialog.Builder(this), OK
--------- beginning of crash
04-18 17:08:40.940  6011  6011 E AndroidRuntime: FATAL EXCEPTION: main
04-18 17:08:40.940  6011  6011 E AndroidRuntime: Process: com.cictech.xlauncher, PID: 6011
04-18 17:08:40.940  6011  6011 E AndroidRuntime: android.content.res.Resources$NotFoundException: Resource ID #0x0
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:237)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.content.res.Resources.loadXmlResourceParser(Resources.java:2400)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.content.res.Resources.getLayout(Resources.java:1252)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.LayoutInflater.inflate(LayoutInflater.java:530)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.LayoutInflater.inflate(LayoutInflater.java:479)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at androidx.appcompat.app.AlertController$AlertParams.createListView(AlertController.java:989)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at androidx.appcompat.app.AlertController$AlertParams.apply(AlertController.java:965)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at androidx.appcompat.app.AlertDialog$Builder.create(AlertDialog.java:984)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at com.cictech.xlauncher.MainActivity$7.onClick(MainActivity.java:188)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.View.performClick(View.java:7448)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.View.performClickInternal(View.java:7425)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.View.onKeyUp(View.java:15060)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.KeyEvent.dispatch(KeyEvent.java:2892)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.View.dispatchKeyEvent(View.java:14247)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1954)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1959)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1959)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1959)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1959)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1959)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1959)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at com.android.internal.policy.DecorView.superDispatchKeyEvent(DecorView.java:476)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at com.android.internal.policy.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1861)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.app.Activity.dispatchKeyEvent(Activity.java:4085)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at androidx.core.app.ComponentActivity.superDispatchKeyEvent(ComponentActivity.java:126)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at androidx.core.view.KeyEventDispatcher.dispatchKeyEvent(KeyEventDispatcher.java:86)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at androidx.core.app.ComponentActivity.dispatchKeyEvent(ComponentActivity.java:144)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at androidx.appcompat.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:604)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at androidx.appcompat.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:60)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at androidx.appcompat.app.AppCompatDelegateImpl$AppCompatWindowCallback.dispatchKeyEvent(AppCompatDelegateImpl.java:3413)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:390)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:5977)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5845)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5340)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5397)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5363)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5515)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5371)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5572)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5344)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5397)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5363)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5371)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5344)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5397)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5363)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5548)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:5706)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:3179)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:2721)
04-18 17:08:40.943  6011  6011 E AndroidRuntime:        at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:2712)
04-18 17:08:40.943  6011  6011 E AndroidRuntime:        at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:3156)
04-18 17:08:40.943  6011  6011 E AndroidRuntime:        at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:143)
04-18 17:08:40.943  6011  6011 E AndroidRuntime:        at android.os.MessageQueue.nativePollOnce(Native Method)
04-18 17:08:40.943  6011  6011 E AndroidRuntime:        at android.os.MessageQueue.next(MessageQueue.java:335)
04-18 17:08:40.943  6011  6011 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:183)
04-18 17:08:40.943  6011  6011 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:7695)
04-18 17:08:40.943  6011  6011 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
04-18 17:08:40.943  6011  6011 E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
04-18 17:08:40.943  6011  6011 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
04-18 17:08:40.947  2569  2813 D AudioFlinger: mixer(0xabae2080) throttle end: throttle time(45)
04-18 17:08:40.964  2774  3534 W ActivityTaskManager:   Force finishing activity com.cictech.xlauncher/.MainActivity

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

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

相关文章

纯血鸿蒙APP实战开发——主页瀑布流实现

介绍 本示例介绍使用ArkUIWaterFlow组件和LazyForEach实现瀑布流场景。该场景多用于购物、资讯类应用。 效果图预览 使用说明 加载完成后显示整个列表,超过一屏时可以上下滑动。 实现思路 创建WaterFlowDataSource类,实现IDataSource接口的对象&…

SpringBoot 常用注解总结超详细(面试)

目录 一、组件相关🎁 Controller Service Repository Component 二、依赖注入相关🍉 Autowired Resource 根据类型注入(By Type) 根据名称注入(By Name) 区别 Qualifier Resource 和 Qualifie…

通用视觉多模态大模型 一统理解/生成/分割/编辑

这是一款通用视觉多模态大模型,支持从视觉理解到视觉生成、从低层次到高层次的一系列视觉任务,解决了困扰大语言模型产业已久的图像/视频模型割裂问题,提供了一个全面统一静态图像与动态视频内容的理解、生成、分割、编辑等任务的像素级通用视…

如何在Windows 11中安装或删除可选功能?这里提供详细步骤

序言 Windows 11提供了各种各样的功能,其中许多功能,如Linux的Windows子系统(WSL)和语言包,它默认情况下不会安装。你也可以删除默认情况下安装的功能,以下是如何以图形方式或从命令行执行此操作。 关于Windows 11中的可选功能,你需要了解的内容 还有其他添加和删除功…

UVa12313 A Tiny Raytracer

UVa12313 A Tiny Raytracer 题目链接题意分析AC 代码 题目链接 UVA - 12313 A Tiny Raytracer 题意 给出 《训练指南》题意翻译 本题的任务是实现一个小型光线追踪渲染器。场景由若干三角形网格(triangle mesh)组成,有且仅有一个点光源&…

基于Vue3实现的 宫格 图片摆放

一个可以支持无限宫格的 vue3实现 本来要参考微信群头像的规则实现&#xff0c;网上找到一大堆类似的需求&#xff0c;奈何XXX折磨人&#xff0c;九宫格已经不能满足ta了。 当前代码实现了………… 好多东西(可以多宫格).具体的看效果图 code <style scoped langless> .…

【Chapter1】绪论,《微机系统》第一版,赵宏伟

一、绪论 1.1 微处理器、微型计算机和微型计算机系统 计算机按照体积、性能、价格通常分为巨型机、大型机、中型机、小型机和微型计算机&#xff08;简称微机&#xff0c;如单片机、单板机&#xff09;五类。但是它们都由五大部分组成&#xff1a;运算器、控制器、存储器、输…

Golang | Leetcode Golang题解之第52题N皇后II

题目&#xff1a; 题解&#xff1a; func totalNQueens(n int) (ans int) {columns : make([]bool, n) // 列上是否有皇后diagonals1 : make([]bool, 2*n-1) // 左上到右下是否有皇后diagonals2 : make([]bool, 2*n-1) // 右上到左下是否有皇后var backtrack func(int)…

iZotope RX 10 音频修复和增强工具 mac/win

iZotope RX 10 for Mac是一款出色的音频修复和增强工具&#xff0c;凭借其卓越的音频处理技术&#xff0c;能够轻松应对各种音频问题。 无论是背景噪音、回声还是失真&#xff0c;RX 10都能精准去除&#xff0c;还原清晰纯净的音频。同时&#xff0c;它还提供了丰富的增强工具&…

前端HTML5学习1(新增布局,状态,列表,文本,表单控件标签)

前端HTML5学习1&#xff08;新增布局&#xff0c;状态&#xff0c;列表&#xff0c;文本&#xff0c;表单控件标签&#xff09; 新增布局标签新增状态标签新增列表标签新增文本标签新增表单控件属性input新增属性值 新增布局标签 HTML5 引入了许多新的语义化标签&#xff0c;用…

Vue2基础知识:组件的样式冲突scoped,为什么加了scoped样式就会独立出来呢?

默认情况&#xff1a;写在组件中的样式会全局生效&#xff0c;这样就容易造成多个组件之间的样式冲突问题。 1.全局样式&#xff1a;默认组件中的样式会作用到全局.&#xff08;也就是说不管你在哪个页面或者组件中写入样式&#xff0c;只要页面生效&#xff0c;该页面的style…

【利兹】XJCO3221 Parallel Computation 并行计算考试资料辅导

XJCO3221 (34964) 西交利兹院 【并行计算】 Parallel Computation 资料or辅导 需要请私聊 1.独家近年考试题 包你高分 2.cw&#xff1a; Coursework 1: OpenMP Programming Assignment Coursework 2: MPI Programming Assignment and Analysis Coursework 3: OpenCL Progr…

STM32与Proteus的串口仿真详细教程与源程序

资料下载地址&#xff1a;STM32与Proteus的串口仿真详细教程与源程序 资料内容 包含LCD1602显示&#xff0c;串口发送接收&#xff0c;完美实现。 文档内容齐全&#xff0c;包含使用说明&#xff0c;相关驱动等。 解决了STM32的Proteus串口收发问题。 注意&#xff1a;每输…

笔试狂刷--Day7(搜索,动态规划)

大家好,我是LvZi,今天带来笔试狂刷--Day7 一.Fibonacci数列 1.题目链接 链接:Fibonacci数列 2.分析 在求解fib数列的过程中判断什么时候接近最小值 3.代码 import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public sta…

单片机通讯协议

参考&#xff1a;江科大单片机教程 STM32入门教程-2023版 细致讲解 中文字幕_哔哩哔哩_bilibili IIC通讯协议SPI通信协议UARTCANUSB速度100k-400khz4Mhz-线数2 CLK,DATA4CLK,ENB,IO,OI额外设备一主多从一主多从 一般不用自己写&#xff0c;都有相应的库或官方提供相应的&#…

HarmonyOS 鸿蒙下载三方依赖 ohpm环境搭建

前言 ohpm&#xff08;One Hundred Percent Mermaid &#xff09;是一个集成了Mermaid的命令工具&#xff0c;可以用于生成关系图、序列图、等各种图表。我们可以使用ohpm来生成漂亮且可读性强的图表。 本期教大家如何搭建ophm环境&#xff1a; 一、在DevEco Studio中&#…

SCCM软件包

SCCM基础搭建-CSDN博客https://blog.csdn.net/weixin_52364868/article/details/135292639#comments_32482850 ADK下载&#xff1a; 下载并安装 Windows ADK | Microsoft Learn SQL Server2019/2022 SQL Server 下载 | Microsoft 下载最新的即可&#xff0c;SQL Server2022…

DSP开发实战教程-国产DSP替代进口TI DSP的使用技巧

1.替换CCS安装路径下的Flash.out文件 找到各自CCS的安装路径&#xff1a; D:\ti\ccs1230\ccs\ccs_base\c2000\flashAlgorithms 复制进芯电子国产DSP官网提供的配置文件 下载链接&#xff1a;https://mp.csdn.net/mp_download/manage/download/UpDetailed 2.替换原有文件 3.…

RabbitMQ工作模式(4) - 路由模式

概念 路由模式&#xff08;Routing&#xff09;是 RabbitMQ 中的一种消息传递模式&#xff0c;也称为直连模式。它允许生产者将消息发送到一个交换机&#xff0c;并指定一个或多个路由键&#xff08;routing key&#xff09;&#xff0c;交换机根据路由键将消息路由到与之匹配的…