博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
androidalertDialog无法显示按钮的bug
阅读量:7078 次
发布时间:2019-06-28

本文共 3536 字,大约阅读时间需要 11 分钟。

不废话,直接上代码

1 @Override 2             public void onTabChanged(String tabId) { 3                 Builder builder = new AlertDialog.Builder( 4                         TabWidgetActivity.this); 5                 builder.setTitle("选项卡弹窗"); 6  7                 // builder.setMessage("您选中了第"+tabId+"个选项卡");//tabId 获取的是选项卡的id 8                 builder.setMessage("您选中了第" + mTabHost.getCurrentTab() + "个选项卡"); 9                 // builder.setIcon(R.drawable.icon);10                 AlertDialog dialog = builder.create();11                 builder.setPositiveButton("确定", new OnClickListener() {12                     @Override13                     public void onClick(DialogInterface dialog, int which) {14                         Toast.makeText(TabWidgetActivity.this, "您点击了确定按钮",15                                 Toast.LENGTH_LONG).show();16                         dialog.cancel();17                     }18                 });19                 builder.setNegativeButton("取消", new OnClickListener() {20 21                     @Override22                     public void onClick(DialogInterface dialog, int which) {23                         Toast.makeText(TabWidgetActivity.this, "您点击了取消按钮",24                                 Toast.LENGTH_LONG).show();25                         dialog.cancel();26                     }27                 });28 29                 dialog.show();30             }31         });

发现确定和取消的按钮没有显示出来

注意代码中黑体字 AlertDialog dialog = builder.create();的位置

修改代码后的

修改后的代码

1 @Override 2             public void onTabChanged(String tabId) { 3                  Builder builder=new AlertDialog.Builder(TabWidgetActivity.this); 4                 builder.setTitle("选项卡弹窗"); 5                  6                 //builder.setMessage("您选中了第"+tabId+"个选项卡");//tabId 获取的是选项卡的id 7                 builder.setMessage("您选中了第"+mTabHost.getCurrentTab()+"个选项卡"); 8                 //builder.setIcon(R.drawable.icon); 9                  10                 builder.setPositiveButton("确定", new OnClickListener() {11                     @Override12                     public void onClick(DialogInterface dialog, int which) {13                         Toast.makeText(TabWidgetActivity.this, "您点击了确定按钮", Toast.LENGTH_LONG).show();14                         dialog.cancel();15                     }16                 });17                 builder.setNegativeButton("取消", new OnClickListener() {18                     19                     @Override20                     public void onClick(DialogInterface dialog, int which) {21                         Toast.makeText(TabWidgetActivity.this, "您点击了取消按钮", Toast.LENGTH_LONG).show();22                         dialog.cancel();23                     }24                 });25                 26                 AlertDialog dialog=    builder.create();27                 dialog.show();28             }29         });

注意此时 AlertDialog dialog= builder.create();的位置

 

 

其实对比不难发现,为题在于创建alertDialog的时候,也就是create()方法被触发的时候,如果这时候还没绑定setPositiveButton和setNegativeButton 那么创建对话框之后也无法引用到builder的一些属性资源。(表示相当的拗口)

观察create的源码

1 public AlertDialog create() { 2             final AlertDialog dialog = new AlertDialog(P.mContext); 3             P.apply(dialog.mAlert); 4             dialog.setCancelable(P.mCancelable); 5             dialog.setOnCancelListener(P.mOnCancelListener); 6             if (P.mOnKeyListener != null) { 7                 dialog.setOnKeyListener(P.mOnKeyListener); 8             } 9             return dialog;10         }

就知道为什么不能在引用builder对应了。

由于时间原因,就不深入研究,等把android的基础read一遍以后有时间在来慢慢品味源码。

转载地址:http://mndml.baihongyu.com/

你可能感兴趣的文章
android路径获取
查看>>
“前.NET Core时代”如何实现跨平台代码重用 ——程序集重用
查看>>
Maven入门教程
查看>>
ASP.NET Core 中文文档 第二章 指南(4.5)使用 SQL Server LocalDB
查看>>
用MathType在图片上加公式的方法
查看>>
Xmind 快捷键
查看>>
C#引用C++开发的DLL
查看>>
使用Design包实现QQ动画侧滑效果和滑动菜单导航
查看>>
zabbix_3.0安装部署与中文支持
查看>>
CSS常用操作-导航栏
查看>>
ASP.NET MVC的Action拦截器(过滤器)ActionFilter
查看>>
C++中的STL中map用法详解
查看>>
Ubuntu16.04编译Android6.0/cm13.0教程及相关错误解决办法
查看>>
《你不知道的JavaScript》整理(三)——对象
查看>>
.pdb文件的使用方法
查看>>
Java基础知识笔记(三:文件与数据流)
查看>>
SQL语句教程
查看>>
微信公众号改名后阅读量涨了吗?
查看>>
linux添加用户、用户组、权限
查看>>
MySQL实现定时任务
查看>>