Android Alert Dialog解決點擊按鈕對話方塊不關閉的問題

來源:互聯網
上載者:User

標籤:android   io   os   ar   sp   on   問題   log   代碼   

Android alertDialog中左中右三個按鈕,點擊按鈕的時候,即使沒調用dismiss方法,系統也會預設的去調用,而把這個對話方塊被關閉掉,但是我們的一些實際需求,就需要保留這個對話方塊不動,例如輸入校正碼,密碼之類的校正問題,如果使用者輸入錯誤,而關閉後彈出對話方塊,就很彆扭了。這裡有個方案可以解決這個問題,使得即使按鈕事件發生了,也不會關閉對話方塊。核心思想是欺騙一下系統,在點擊事件裡,修改該對話方塊的顯示狀態為關閉,則系統就不會去關閉該對話方塊了。具體實現代碼如下:

/** @author sanji* 假設對話方塊已經關閉,欺騙系統,以保持輸入視窗*/

private void setDialogNotShow(){

   if(mDialogInterface!=null){

      try {

         Field field = mDialogInterface.getClass() .getSuperclass().getDeclaredField( "mShowing" );

         field.setAccessible( true ); // 將mShowing變數設為false,表示對話方塊已關閉

         field.set(mDialogInterface, false );

      } catch (Exception e){

         e.printStackTrace();

      }

   }

}

mDialogInterface是點擊對話方塊按鈕事件傳進來的DialogInterface dialog參數,如果再需要銷毀該對話方塊的話,則:

private void closeDialogOfPINorPUK(){

    if(mDialogInterface!=null){

       try {

          Field field = mDialogInterface.getClass() .getSuperclass().getDeclaredField( "mShowing" );

          field.setAccessible( true );

          field.set(mDialogInterface, true );

          mDialogInterface.dismiss();

       }catch (Exception e){

          e.printStackTrace();

       }

    }

}

Android Alert Dialog解決點擊按鈕對話方塊不關閉的問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.