AlertDialog 点击空白处、返回按钮 行为

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:38   1690   0
  1. 弹出AlertDialog之后,点击空白处,默认Dialog消失;

  2. 点击回退键,默认消失;

那么如何点击空白处,不隐藏对话框,点击Android的返回键,跳回到上一个Activity?

直接看代码:

//*******************
public static void showAlertDialog(final Context context, String title, CharSequence[] items,
            OnClickListener listener, boolean canceledOutside){
     Builder builder = new AlertDialog.Builder(context).setTitle(title).setItems(items, listener);
     if(canceledOutside){
      builder.show();
     }else{
            AlertDialog dialog = builder.create();
            //点击dialog之外的空白处,dialog不能消失
            dialog.setCanceledOnTouchOutside(false);
            dialog.setOnKeyListener(new OnKeyListener() {
    @Override
    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
     if (keyCode == KeyEvent.KEYCODE_BACK && 
                   event.getAction() == KeyEvent.ACTION_UP) {
      //按back键,返回上一个Activity
      dialog.cancel();
      boolean isActivity = context instanceof Activity;
      if(isActivity){
       Activity act = (Activity)context;
                act.finish();
      }
               return false;
               }
     return false;
    }
   });
            dialog.show();
     }
    }


dialog的dismiss 和cancel方法区别:

cancel会调用CancelListener,这是最大的区别,另外cancel会调用dismiss。



转载于:https://my.oschina.net/jrrx/blog/300549

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP