androidalertDialog无法显示按钮的bug - Go语言中文社区

androidalertDialog无法显示按钮的bug


不废话,直接上代码

 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                     @Override
13                     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                     @Override
22                     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                     @Override
12                     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                     @Override
20                     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一遍以后有时间在来慢慢品味源码。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_34075268/article/details/85523213
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-05-31 12:42:11
  • 阅读 ( 543 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢