2011-09-01 23 views
12

Ho un problema strano con il corretto funzionamento della tastiera virtuale.Tastiera software Android non funzionante

La mia app non ha una sola vista EditText, o usa la tastiera in qualche modo, ma in qualche modo dopo aver installato la mia app su diversi dispositivi, lavorando con essa e poi tornando a utilizzare il dispositivo, la tastiera non funziona più , e mi sta facendo impazzire ...

Quello che l'utente vede è che quando fa clic su un pulsante di carattere nella tastiera virtuale non viene mostrato nulla nell'EditText per ogni app. Come ho detto, lo strano problema riguarda l'intero sistema e l'utente non può scrivere nulla.

La mia app contiene tutti i tipi di funzionalità, tutto funziona con API stander, quindi non capisco come posso causare questo, o almeno attivarlo.

Quando la tastiera non funziona e l'utente clicca sui pulsanti della tastiera si può vedere nel logcat:

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

Come un InputConnection può diventare inattivo e c'è un modo per attivarlo?

Mi chiedevo se qualcuno avesse questo tipo di problema e quale fosse la causa?

+0

Non importa se è possibile condividere il codice, per favore, voglio davvero vedere che cosa causa questo problema? – ingsaurabh

+0

Ho sperimentato qualcosa di simile prima, ma utilizzava swype beta, ed era un problema con l'app swype, non con un'app esterna. Sei sicuro che sia la tua applicazione a causare questo, e gli utenti stanno riscontrando problemi usando la tastiera di sistema predefinita o una tastiera personalizzata? Potrei risolverlo ogni volta passando da swype a default e ritorno a swype. – Marmoy

+0

ciao mandami il file di codice lo verificherò – Narasimha

risposta

-3

1) Hai provato sovrascrivendo l'onPause e uccidendo eventuali firme della tua app con:

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

Sono curioso di sapere se questo non risolve il problema, si può davvero dimostrare che è la vostra applicazione che è causando il blocco?

2) Implementate qualsiasi tipo di InputConnection da soli?

Anche se non potrebbe essere la vostra app appeso uno di loro per qualche ragione, questa citazione da here potrebbe avere qualcosa a che fare con il problema pure (messa a fuoco):

* Solo il cliente attiva del InputConnection accetterà le operazioni. L'IMF informa ogni processo client se è attivo e il framework impone che in processi inattivi le chiamate all'attuale InputConnection vengano ignorate. Ciò garantisce che l'IME corrente possa solo inviare eventi e modifiche di testo all'interfaccia utente che l'utente vede come a fuoco.

5

Sembra che la connessione di ingresso non sia stata chiusa correttamente. Ho avuto problema simile e fissato in modo seguente:

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

Ho avuto lo stesso problema con il mio Nexus 7 e Samsung s3. Ho costruito l'app con Android 4.4. Di solito la tastiera non appare per la prima volta o se nascondo la tastiera non è mai più apparsa. La fonte del problema era android:textIsSelectable="true". Se ho rimosso da tutti i miei editText allora questo errore è scomparso.

+0

Questo mi ha aiutato a superare" endBatchEdit su InputConnection inattivo ", chiamando EditText.setTextIsSelectable (false) quando si nasconde la tastiera e non si desidera che ritorni per quel campo. – delrocco

1

Ho avuto problemi simili in alcuni dispositivi.Dopo 2 giorni di modifica del mio codice ho trovato che la fonte del problema è la riga android:selectAllOnFocus="true" nel mio EditText

Problemi correlati