2011-09-01 89 views
12

我遇到了一個奇怪的問題,使軟鍵盤無法正常工作。Android軟鍵盤無法正常工作

我的應用程序沒有單獨的EditText視圖,或者以某種方式使用鍵盤,但在某些設備上安裝我的應用程序後,使用它,然後返回使用設備軟鍵盤停止工作,並且它讓我瘋狂......

用戶看到的是,當他/她點擊軟鍵盤上的字符按鈕時,EditText中沒有顯示任何應用程序。就像我說的那樣,奇怪的問題影響整個系統,用戶不能寫任何東西。

我的應用程序包含所有類型的功能,所有功能都使用了標準的API,所以我不明白我該如何導致這種情況,或至少是否觸發它。

當鍵盤不能正常使用鍵盤上的按鈕,用戶點擊就可以在logcat中看到:

WARN/IInputConnectionWrapper(1628): sendKeyEvent on inactive InputConnection 
WARN/IInputConnectionWrapper(1628): getCursorCapsMode on inactive InputConnection 
WARN/IInputConnectionWrapper(1628): endBatchEdit on inactive InputConnection 

怎樣的InputConnection會變爲非活動狀態,是有辦法激活它?

我想知道是否有人有這樣的問題,這是什麼原因?

+0

不介意如果您可以共享代碼,請我真的想看看是什麼原因導致此類問題? – ingsaurabh

+0

我遇到過類似的事情之前,但它是使用Swype的測試版,這是Swype的應用程序,而不是外部應用程序的問題。你確定這是你的應用程序造成這一點,並使用默認的系統鍵盤或自定義鍵盤出現問題的用戶?我可以從Swype輸入切換一次違約,並回到了Swype每一次解決它。 – Marmoy

+0

喜寄給我的代碼文件,我將檢查出來 – Narasimha

回答

-3

1)您是否嘗試過重寫的onPause和殺死你的應用程序中的任何簽名具有:

System.runFinalizersOnExit(true); 
System.exit(1); 

我很好奇,如果這沒有幫助,你真能證明這是你的應用程序,是造成掛斷?

2)你是否自己實現了任何類型的InputConnection?

即使沒有它可能是您的應用程序掛他們中的一個因某種原因,從here這句話可能有一些跟你的問題,以及(重點):

*只有激活客戶端InputConnection將接受操作。 IMF告知每個客戶端進程是否處於活動狀態,並且框架 強制執行,在非活動進程中調用Inputling當前將會被忽略。這可確保當前輸入法僅可將事件和文本編輯傳遞給用戶看到的 焦點的用戶界面。

5

看起來您的輸入連接未正確關閉。我有類似的問題,並以下列方式固定它:

EditText editTextLogin = (EditText) findViewById(R.id.editTextLogin); 
editTextLogin.requestFocus(); 
InputMethodManager inputManager = (InputMethodManager)context.getSystemService(INPUT_METHOD_SERVICE); 
inputManager.restartInput(editTextLogin); 
3

我有同樣的問題,我的Nexus 7和三星S3。我用android 4.4構建了應用程序。通常情況下,鍵盤並沒有第一次出現,或者我隱藏的鍵盤再也沒有出現過。 問題來源是android:textIsSelectable="true"。如果我從我的所有editText中刪除,那麼這個錯誤消失了。

+0

這幫助我克服了‘在不活躍InputConnection endBatchEdit’,通過調用EditText.setTextIsSelectable(假)隱藏鍵盤的時候,又不想它回來的那場。 – delrocco

1

我在某些設備上有類似的問題。更改我的代碼2天后,我發現問題的根源是線路android:selectAllOnFocus="true"在我的EditText

相關問題