pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

        • <bdo id='I1RAH'></bdo><ul id='I1RAH'></ul>

        <legend id='I1RAH'><style id='I1RAH'><dir id='I1RAH'><q id='I1RAH'></q></dir></style></legend>

        <small id='I1RAH'></small><noframes id='I1RAH'>

      1. <i id='I1RAH'><tr id='I1RAH'><dt id='I1RAH'><q id='I1RAH'><span id='I1RAH'><b id='I1RAH'><form id='I1RAH'><ins id='I1RAH'></ins><ul id='I1RAH'></ul><sub id='I1RAH'></sub></form><legend id='I1RAH'></legend><bdo id='I1RAH'><pre id='I1RAH'><center id='I1RAH'></center></pre></bdo></b><th id='I1RAH'></th></span></q></dt></tr></i><div class="nlvh5rb" id='I1RAH'><tfoot id='I1RAH'></tfoot><dl id='I1RAH'><fieldset id='I1RAH'></fieldset></dl></div>
        <tfoot id='I1RAH'></tfoot>
      2. BottomSheetDialogFragment - 聽用戶事件解除

        BottomSheetDialogFragment - listen to dismissed by user event(BottomSheetDialogFragment - 聽用戶事件解除)
          <tbody id='xtdtE'></tbody>
          <i id='xtdtE'><tr id='xtdtE'><dt id='xtdtE'><q id='xtdtE'><span id='xtdtE'><b id='xtdtE'><form id='xtdtE'><ins id='xtdtE'></ins><ul id='xtdtE'></ul><sub id='xtdtE'></sub></form><legend id='xtdtE'></legend><bdo id='xtdtE'><pre id='xtdtE'><center id='xtdtE'></center></pre></bdo></b><th id='xtdtE'></th></span></q></dt></tr></i><div class="vdfzdbz" id='xtdtE'><tfoot id='xtdtE'></tfoot><dl id='xtdtE'><fieldset id='xtdtE'></fieldset></dl></div>

            <small id='xtdtE'></small><noframes id='xtdtE'>

          1. <legend id='xtdtE'><style id='xtdtE'><dir id='xtdtE'><q id='xtdtE'></q></dir></style></legend>
          2. <tfoot id='xtdtE'></tfoot>

              • <bdo id='xtdtE'></bdo><ul id='xtdtE'></ul>
                • 本文介紹了BottomSheetDialogFragment - 聽用戶事件解除的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  如何收聽 BottomSheetDialogFragment 的最終解除?我只想在最終解雇時保存用戶更改...

                  How can I listen to a FINAL dismissal of a BottomSheetDialogFragment? I want to save user changes on the final dismissal only...

                  我嘗試了以下操作:

                  方法一

                  只有在通過向下滑動對話框(不是在后按或觸摸外部)關閉對話框時才會觸發

                  This only fires, if the dialog is dismissed by swiping it down (not on back press or on touch outside)

                  @Override
                  public Dialog onCreateDialog(Bundle savedInstanceState)
                  {
                      Dialog d = super.onCreateDialog(savedInstanceState);
                      d.setOnShowListener(new DialogInterface.OnShowListener() {
                          @Override
                          public void onShow(DialogInterface dialog) {
                  
                              BottomSheetDialog d = (BottomSheetDialog) dialog;   
                              FrameLayout bottomSheet = (FrameLayout) dialog.findViewById(android.support.design.R.id.design_bottom_sheet);
                  
                              BottomSheetBehavior behaviour = BottomSheetBehavior.from(bottomSheet);
                              behaviour.setState(BottomSheetBehavior.STATE_EXPANDED);
                              behaviour.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
                                  @Override
                                  public void onStateChanged(@NonNull View bottomSheet, int newState) {
                                      if (newState == BottomSheetBehavior.STATE_HIDDEN)
                                      {
                                          // Bottom Sheet was dismissed by user! But this is only fired, if dialog is swiped down! Not if touch outside dismissed the dialog or the back button
                                          Toast.makeText(MainApp.get(), "HIDDEN", Toast.LENGTH_SHORT).show();
                                          dismiss();
                                      }
                                  }
                  
                                  @Override
                                  public void onSlide(@NonNull View bottomSheet, float slideOffset) {
                  
                                  }
                              });
                          }
                      });
                      return d;
                  }
                  

                  方法二

                  這讓我無法區分最終解雇和來自屏幕旋轉或活動娛樂的解雇...

                  This does not allow me to distinguish between a final dismissal and one that is coming from a screen rotation or activity recreation...

                   @Override
                  public void onDismiss(DialogInterface dialog)
                  {
                      super.onDismiss(dialog);
                      // this works fine but fires one time too often for my use case, it fires on screen rotation as well, although this is a temporarily dismiss only
                      Toast.makeText(MainApp.get(), "DISMISSED", Toast.LENGTH_SHORT).show();
                  }
                  

                  問題

                  如何收聽表明用戶已完成對話的事件?

                  How can I listen to an event that indicates, that the user has finished the dialog?

                  推薦答案

                  雖然關于 SO 的所有類似問題都建議使用 onDismiss 我認為以下是正確的解決方案:

                  Although all similar questions on SO suggest using onDismiss I think following is the correct solution:

                  @Override
                  public void onCancel(DialogInterface dialog)
                  {
                      super.onCancel(dialog);
                      Toast.makeText(MainApp.get(), "CANCEL", Toast.LENGTH_SHORT).show();
                  }
                  

                  如果發生以下情況,則會觸發:

                  This fires if:

                  * the user presses back
                  * the user presses outside of the dialog
                  

                  這不會觸發:

                  * on screen rotation and activity recreation
                  

                  解決方案

                  結合 onCancelBottomSheetBehavior.BottomSheetCallback.onStateChanged,如下所示:

                  Combine onCancel and BottomSheetBehavior.BottomSheetCallback.onStateChanged like following:

                  public class Dailog extends BottomSheetDialogFragment
                  {
                      @Override
                      public void onCancel(DialogInterface dialog)
                      {
                          super.onCancel(dialog);
                          handleUserExit();
                      }
                  
                      @Override
                      public Dialog onCreateDialog(Bundle savedInstanceState)
                      {
                          Dialog d = super.onCreateDialog(savedInstanceState);
                          d.setOnShowListener(new DialogInterface.OnShowListener() {
                              @Override
                              public void onShow(DialogInterface dialog) {
                                  BottomSheetDialog d = (BottomSheetDialog) dialog;
                                  FrameLayout bottomSheet = (FrameLayout) d.findViewById(android.support.design.R.id.design_bottom_sheet);
                                  BottomSheetBehavior behaviour = BottomSheetBehavior.from(bottomSheet);
                                  behaviour.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
                                      @Override
                                      public void onStateChanged(@NonNull View bottomSheet, int newState) {
                                          if (newState == BottomSheetBehavior.STATE_HIDDEN)
                                          {
                                              handleUserExit();
                                              dismiss();
                                          }
                                      }
                  
                                      @Override
                                      public void onSlide(@NonNull View bottomSheet, float slideOffset) {
                  
                                      }
                                  });
                              }
                          });
                          return d;
                      }
                  
                      private void handleUserExit()
                      {
                          Toast.makeText(MainApp.get(), "TODO - SAVE data or similar", Toast.LENGTH_SHORT).show();
                      }
                  }
                  

                  這篇關于BottomSheetDialogFragment - 聽用戶事件解除的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                  【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                  相關文檔推薦

                  Get user#39;s current location using GPS(使用 GPS 獲取用戶的當前位置)
                  IllegalArgumentException thrown by requestLocationUpdate()(requestLocationUpdate() 拋出的 IllegalArgumentException)
                  How reliable is LocationManager#39;s getLastKnownLocation and how often is it updated?(LocationManager 的 getLastKnownLocation 有多可靠,多久更新一次?)
                  How to detect Location Provider ? GPS or Network Provider(如何檢測位置提供者?GPS 或網絡提供商)
                  Get current location during app launch(在應用啟動期間獲取當前位置)
                  locationManager.getLastKnownLocation() return null(locationManager.getLastKnownLocation() 返回 null)
                    <i id='M50Tp'><tr id='M50Tp'><dt id='M50Tp'><q id='M50Tp'><span id='M50Tp'><b id='M50Tp'><form id='M50Tp'><ins id='M50Tp'></ins><ul id='M50Tp'></ul><sub id='M50Tp'></sub></form><legend id='M50Tp'></legend><bdo id='M50Tp'><pre id='M50Tp'><center id='M50Tp'></center></pre></bdo></b><th id='M50Tp'></th></span></q></dt></tr></i><div class="91lt5tt" id='M50Tp'><tfoot id='M50Tp'></tfoot><dl id='M50Tp'><fieldset id='M50Tp'></fieldset></dl></div>

                        <legend id='M50Tp'><style id='M50Tp'><dir id='M50Tp'><q id='M50Tp'></q></dir></style></legend>
                            <bdo id='M50Tp'></bdo><ul id='M50Tp'></ul>
                          • <small id='M50Tp'></small><noframes id='M50Tp'>

                              <tbody id='M50Tp'></tbody>
                          • <tfoot id='M50Tp'></tfoot>

                            主站蜘蛛池模板: 室内室外厚型|超薄型|非膨胀型钢结构防火涂料_隧道专用防火涂料厂家|电话|价格|批发|施工 | 纳米涂料品牌 防雾抗污纳米陶瓷涂料厂家_虹瓷科技 | 【铜排折弯机,钢丝折弯成型机,汽车发泡钢丝折弯机,线材折弯机厂家,线材成型机,铁线折弯机】贝朗折弯机厂家_东莞市贝朗自动化设备有限公司 | 悬浮拼装地板_幼儿园_篮球场_悬浮拼接地板-山东悬浮拼装地板厂家 | 不锈钢列管式冷凝器,换热器厂家-无锡飞尔诺环境工程有限公司 | 无负压供水设备,消防稳压供水设备-淄博创辉供水设备有限公司 | 台湾Apex减速机_APEX行星减速机_台湾精锐减速机厂家代理【现货】-杭州摩森机电 | 精密五金冲压件_深圳五金冲压厂_钣金加工厂_五金模具加工-诚瑞丰科技股份有限公司 | 合肥地磅_合肥数控切割机_安徽地磅厂家_合肥世佳电工设备有限公司 | 口臭的治疗方法,口臭怎么办,怎么除口臭,口臭的原因-口臭治疗网 | 拼装地板,悬浮地板厂家,悬浮式拼装运动地板-石家庄博超地板科技有限公司 | 工程管道/塑料管材/pvc排水管/ppr给水管/pe双壁波纹管等品牌管材批发厂家-河南洁尔康建材 | 福州甲醛检测-福建室内空气检测_环境检测_水质检测-福建中凯检测技术有限公司 | pH污水传感器电极,溶解氧电极传感器-上海科蓝仪表科技有限公司 | 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 | 蜂窝块状沸石分子筛-吸附脱硫分子筛-萍乡市捷龙环保科技有限公司 | 冷却塔风机厂家_静音冷却塔风机_冷却塔电机维修更换维修-广东特菱节能空调设备有限公司 | 10吨无线拉力计-2吨拉力计价格-上海佳宜电子科技有限公司 | 工控机-图像采集卡-PoE网卡-人工智能-工业主板-深圳朗锐智科 | 软启动器-上海能曼电气有限公司 真空搅拌机-行星搅拌机-双行星动力混合机-广州市番禺区源创化工设备厂 | 美国PARKER齿轮泵,美国PARKER柱塞泵,美国PARKER叶片泵,美国PARKER电磁阀,美国PARKER比例阀-上海维特锐实业发展有限公司二部 | 找果网 | 苹果手机找回方法,苹果iPhone手机丢了找回,认准找果网! | 混合反应量热仪-高温高压量热仪-微机差热分析仪DTA|凯璞百科 | 粤丰硕水性环氧地坪漆-防静电自流平厂家-环保地坪涂料代理 | 长沙发电机-湖南发电机-柴油发电机供应厂家-长沙明邦智能科技 | 数显恒温油浴-电砂浴-高温油浴振荡器-常州迈科诺仪器有限公司 | 天津市能谱科技有限公司-专业的红外光谱仪_红外测油仪_紫外测油仪_红外制样附件_傅里叶红外光谱技术生产服务厂商 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 粉碎机_塑料粉碎机_塑料破碎机厂家-星标机械 | 安平县鑫川金属丝网制品有限公司,防风抑尘网,单峰防风抑尘,不锈钢防风抑尘网,铝板防风抑尘网,镀铝锌防风抑尘网 | 企典软件一站式企业管理平台,可私有、本地化部署!在线CRM客户关系管理系统|移动办公OA管理系统|HR人事管理系统|人力 | 鑫铭东办公家具一站式定制采购-深圳办公家具厂家直销 | 在线悬浮物浓度计-多参数水质在线检测仪-上海沃懋仪表科技有限公司 | ERP企业管理系统永久免费版_在线ERP系统_OA办公_云版软件官网 | 混合反应量热仪-高温高压量热仪-微机差热分析仪DTA|凯璞百科 | 执业药师报名时间,报考条件,考试时间-首页入口 | 定时排水阀/排气阀-仪表三通旋塞阀-直角式脉冲电磁阀-永嘉良科阀门有限公司 | 胶原检测试剂盒,弹性蛋白检测试剂盒,类克ELISA试剂盒,阿达木单抗ELISA试剂盒-北京群晓科苑生物技术有限公司 | ?水马注水围挡_塑料注水围挡_防撞桶-常州瑞轩水马注水围挡有限公司 | 碳纤维复合材料制品生产定制工厂订制厂家-凯夫拉凯芙拉碳纤维手机壳套-碳纤维雪茄盒外壳套-深圳市润大世纪新材料科技有限公司 | 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 |