2016-07-05 42 views
0

有一個警告對話框,其中包含一個密碼EditText,我試圖執行的操作與按下鍵盤RETURN按鈕後按正按鈕相同。如何通過setOnEditorActionListener關閉android alert對話框本身?

以我MainActivity:

fun enterPwd() { 
    val builder = android.app.AlertDialog.Builder(this) 
    val password = EditText(this) 

    // some layout attributes about password are omitted 

    password.imeOptions = EditorInfo.IME_ACTION_GO 
    password.setOnEditorActionListener({ 
     if(id == EditorInfo.IME_ACTION_GO) { v, id, event -> 
      doSomthingFunction() 
     } 
     false 
    }) 
    builder.setView(password).setMessage("message") 
       .setPositiveButton("confirm", { doSomethingFunction() }) 
       .setNegativeButton("cancel", { dialog, i -> }).show() 
} 

setPositiveButton後者doSomethingFunction(),當按下該按鈕之後的助洗劑將自動解散。然而在前一箇中,對話仍然存在。我曾嘗試通過dialog = builder.show(),然後在setOnEditorActionListener(附後如下)doSomethingFunction()之後通過dialog.dismiss()解僱,但它沒有效果。返回鍵被按下後,我如何解除這個對話框?

val dialog = builder.show() 
password.setOnEditorActionListener({ 
    if(id == EditorInfo.IME_ACTION_GO) { v, id, event -> 
     doSomthingFunction() 
     dialog.dismiss() 
    } 
    false 
}) 
+0

多少編輯文本的有沒有在我們的警報對話框? –

+0

只有一個,'密碼'。這也是我添加到構建器 – whitney13625

+0

嘗試將setPositiveButton()放在doSomethingFunction()的地方的唯一視圖。 –

回答

0

拉姆的評論啓發了我。由於我已經定義了單擊肯定按鈕時的動作,因此我只需從構建器的聲明中獲取對話框,然後在正面按鈕上簡單調用performClick(),並且一切正常。

即:

val dialog = builder.setView(password).setMessage("message") 
      .setPositiveButton("confirm", { doSomethingFunction() }) 
      .setNegativeButton("cancel", { dialog, i -> }).show() 

password.setOnEditorActionListener({ 
    if(id == EditorInfo.IME_ACTION_GO) { v, id, event -> 
     dialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick()   
    } 
    false 
}) 
0

嗨請在調用doSomthingFunction()後關閉對話框。

+0

我曾嘗試過,沒有用處。這就是我來這裏尋求答案的原因。 – whitney13625

+0

@ whitney13625提供代碼的更多細節 –

2

嘗試把setPositiveButton()在doSomethingFunction的地方()

+0

不太清楚你的意思。我嘗試在原始行doSomethingFunction()中替換'builder.setPositiveButton(「confirm」,{d,i - > doSomethingFunction()})'並且什麼也沒有發生。我認爲'setPositiveButton()'只做了這個設置,所以肯定按鈕一直保持不動。 – whitney13625

+0

所以,通過編程創建一個按鈕,並在單擊按鈕時編寫代碼,並隱藏該按鈕,現在放置按鈕。執行doSomethingFunction位置的單擊操作。 –

+0

它會幫助你... @whitney –