2015-04-01 56 views
1

我有用於顯示與帳戶選擇器對話框的代碼。點擊另一個AlertDialog DoLoginDialog中的「驗證」按鈕即可進入該對話框。兩個AlertDialog,onCancel和「嘗試完成一個輸入事件,但輸入事件接收器已被處置。」

accountPicker = new AlertDialog.Builder(this) 
.setTitle(getString(R.string.common_select_an_account)) 
.setAdapter(new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, name), 
      new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       if (which < availableAccounts.length) { 
        final Account chosenAccount = availableAccounts[which]; 
        authenticator.verifyAccount(chosenAccount, MainActivity.this); 
       } else {      
        authenticator.addNewAccount(MainActivity.this); 
       } 
       }}).create(); 

accountPicker.setCancelable(true); 
accountPicker.setCanceledOnTouchOutside(true); 

accountPicker.setOnCancelListener(new DialogInterface.OnCancelListener() { 
    @Override 
     public void onCancel(DialogInterface dialog) { 
      if(DEBUG) Log.d(TAG, "OnCancel - AccountPickerDialog"); 
      showDoLoginDialog(); 
     }}); 
accountPicker.show(); 

基本上,如果用戶取消AlertDialog accountPicker我再次顯示AlertDialog doLoginDialog

當我取消AlertDialog accountPicker我看到(未過濾)這些消息日誌:

Attempted to finish an input event but the input event receiver 
has already been disposed. 

它不會造成應用程序的任何問題,但我想明白髮生了什麼。我搜查了,但只能找到更復雜的情況。這是非常基本的,所以我希望找到能夠幫助我理解這裏發生的事情的人。

回答

2

我有同樣的問題,我發現了一個解釋here

這似乎是一種正常的行爲,由於事件處理的工作流程。 爲避免此警告,您需要將對話框設置爲不可取消(即使觸摸外部),並在對話框中添加取消按鈕以取消對話框。

希望這會有所幫助!

相關問題