Advertencia de InputConnectionWrapper
Recibo una advertencia de InputConnectionWrapper cada vez que apago la pantalla cuando mi aplicación es visible. No sé por qué, porque no uso InputConnection
.
Aquí está la salida LogCat.
- El proyecto hace referencia a los atributos de RTL, pero no activa o desactiva explícitamente el soporte RTL
- ¿Qué significa el triángulo naranja en la columna de destino de la ventana de Selección de dispositivo Android?
- Android - nuevo BitmapDrawable obsoleto; Alternativa Bitmap.createBitmap tiene que tener w / h> 0
- Cómo reactivar una advertencia de Android Lint deshabilitada en el nivel de archivo
- ¿Cómo deshabilito una advertencia de eclipse en el archivo derivado IMarketBillingService.java?
09-07 14:21:31.716: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 09-07 14:21:31.724: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 09-07 14:21:31.724: W/IInputConnectionWrapper(24197): getTextBeforeCursor on inactive InputConnection 09-07 14:21:31.724: W/IInputConnectionWrapper(24197): getTextAfterCursor on inactive InputConnection 09-07 14:21:31.724: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 09-07 14:21:31.724: W/IInputConnectionWrapper(24197): getTextBeforeCursor on inactive InputConnection 09-07 14:21:31.724: W/IInputConnectionWrapper(24197): getTextAfterCursor on inactive InputConnection 09-07 14:21:31.732: W/IInputConnectionWrapper(24197): beginBatchEdit on inactive InputConnection 09-07 14:21:31.732: W/IInputConnectionWrapper(24197): endBatchEdit on inactive InputConnection 09-07 14:21:31.732: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 09-07 14:21:31.732: W/IInputConnectionWrapper(24197): getTextBeforeCursor on inactive InputConnection 09-07 14:21:31.732: W/IInputConnectionWrapper(24197): getTextAfterCursor on inactive InputConnection 09-07 14:21:31.732: W/IInputConnectionWrapper(24197): beginBatchEdit on inactive InputConnection 09-07 14:21:31.732: W/IInputConnectionWrapper(24197): endBatchEdit on inactive InputConnection 09-07 14:21:31.732: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 09-07 14:21:32.013: W/IInputConnectionWrapper(24197): showStatusIcon on inactive InputConnection 09-07 14:21:32.013: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getTextBeforeCursor on inactive InputConnection 09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getTextAfterCursor on inactive InputConnection 09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getTextBeforeCursor on inactive InputConnection 09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getTextAfterCursor on inactive InputConnection 09-07 14:21:32.021: W/IInputConnectionWrapper(24197): beginBatchEdit on inactive InputConnection 09-07 14:21:32.021: W/IInputConnectionWrapper(24197): endBatchEdit on inactive InputConnection 09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection 09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getTextBeforeCursor on inactive InputConnection 09-07 14:21:32.021: W/IInputConnectionWrapper(24197): getTextAfterCursor on inactive InputConnection 09-07 14:21:32.028: W/IInputConnectionWrapper(24197): beginBatchEdit on inactive InputConnection 09-07 14:21:32.028: W/IInputConnectionWrapper(24197): endBatchEdit on inactive InputConnection 09-07 14:21:32.028: W/IInputConnectionWrapper(24197): getExtractedText on inactive InputConnection
- Consulta getContentResolver causa la advertencia CursorWrapperInner
- Cómo desactivar las advertencias de @string resource en eclipse para el SDK de Android
- Advertencia de Android Studio: Utilizar complementos incompatibles para el procesamiento de anotaciones
- Esta clase de controlador debe ser estática o pueden producirse fugas: AsyncQueryHandler
- "No hay teclado para id 0" - ¿qué significa?
- Advertencia de File.mkdirs desde Android Studio
- ¿Por qué establecer una forma extraíble en el fondo de diseño será advertir?
- kotlin suprime la advertencia despreciada para android
Supongo que ya es demasiado tarde para ayudar, pero es en mi caso el problema que tengo un " setOnEditorActionListener " en un texto de edición – si eliminar este oyente de la advertencia se ha ido.
En mi caso en el diseño del botón que tenía esto: android:textIsSelectable="true"
, sólo la eliminación de él y el problema resuelto …
Resultó que el uso anterior de la InputConnectionWrapper
era totalmente correcto. Sin embargo, commitText()
nunca se llama (excepto casos especiales), ya que hay otros métodos, que se utilizan durante la escritura. Estos son principalmente setComposingText()
y sendKeyEvent()
.
Sin embargo, también es importante anular los métodos raramente utilizados como deleteSurroundingText()
o commitText()
para asegurarse de capturar cada entrada de usuario, porque me encontré con un problema similar.
Mi situación: Tengo una vista EditText
que el usuario escribe. El EditText
se borra cuando el usuario presiona un botón. Muchas entradas de InputConnection
inactivas salen cuando InputConnection
rápidamente el botón.
Por editText.setText(null);
: editText.setText(null);
La última línea en mi logcat anterior proporciona una gran indicación de lo que está sucediendo. Por supuesto, el InputConnection
está abrumado con las solicitudes para borrar el texto. Intenté modificar el código para comprobar la longitud del texto antes de intentar borrarlo:
if (editText.length() > 0) { editText.setText(null); }
Esto ayuda a mitigar el problema en que al presionar el botón rápidamente ya no provoca el flujo de advertencias IInputConnectionWrapper
. Sin embargo, esto sigue siendo propenso a problemas cuando el usuario alterna rápidamente entre escribir algo y presionar el botón o presiona el botón cuando la aplicación está bajo carga suficiente, etc.
Afortunadamente, encontré otra forma de borrar texto: Editable.clear()
. Con esto no recibo ninguna advertencia:
if (editText.length() > 0) { editText.getText().clear(); }
Tenga en cuenta que si desea borrar todo el estado de entrada y no sólo el texto (autotexto, autocap, multitap, deshacer), puede utilizar TextKeyListener.clear(Editable e)
.
if (editText.length() > 0) { TextKeyListener.clear(editText.getText()); }
Si desea saber más sobre envoltura de conexión de entrada, visite el siguiente enlace.
http://developer.android.com/reference/android/view/inputmethod/InputConnection.html
- Utilizar JRuby para llamar directamente a Android Java Methods
- ¿Cómo obtener el estado del dispositivo Android (sin conexión o en línea) mediante GCM?