2014-09-24 112 views
1

說我有一個活動,顯示片段A.從片段A我點擊一個按鈕切換到片段B. 在片段A,我隱藏在onPause()方法的軟鍵盤。 在片段B上,我顯示了onResume()方法中的軟鍵盤。Android軟鍵盤:隱藏然後立即顯示

現在,當我點擊按鈕,片段B顯示,但鍵盤不顯示,這是不好的。 如果片段A不使用鍵盤(刪除onPause()中的隱藏軟鍵盤代碼),那麼它工作正常。

我設置了斷點,並且肯定片段A的onPause在片段B的onResume()之前被調用。 所以理論上我認爲無論如何鍵盤仍然應該顯示。

有什麼想法?

+0

我懷疑發生的事情是隱藏和顯示鍵盤的調用正在計劃在UI線程上運行,隱藏之後幾乎立即顯示下面的顯示。由於鍵盤需要一些時間來關閉屏幕動畫,我懷疑show命令從UI處理程序中出列並嘗試執行,但發現鍵盤仍然存在,所以什麼都不做。 – Karakuri 2014-09-24 07:04:47

+0

這就是我懷疑的。但是延遲並不是一種乾淨的方式。我想知道有沒有更好的方法。 – namanhams 2014-09-24 07:15:49

+0

個人而言,我不會在onPause()/ onResume()中操作鍵盤。 – Karakuri 2014-09-24 14:42:32

回答

0

你可以延遲一點鍵盤的顯示。類似於:

Handler handler = new Handler(); 
handler.postDelayed(new Runnable(){ 
    @Override 
    public void run(){ 
     //show the keybpoard 
    } 

}, 500);