studio - servicios en android 8




Android 8.0 Oreo falla al enfocar TextInputEditText (4)

@Luke Simpson tiene razón. Puedes usarlo en themes.XML como: -

<item name="editTextStyle">@style/AppEditTextStyle</item>

and then put
<style name="AppEditTextStyle" parent="Widget.AppCompat.EditText">
        <item name="android:importantForAutofill">auto</item>
 </style>

en V26 / app_styles.xml

Pero, tuve que poner una etiqueta vacía también en app_styles.xml en la carpeta predeterminada. De lo contrario, todas las propiedades de Editar texto se anulan por esto y mi texto de edición no funcionaba correctamente. Y cuando coloca la propiedad importantForAutoFill para v26 y desea que el autocompletado funcione en 8.1, simplemente puede poner

<style name="AppEditTextStyle" parent="Widget.AppCompat.EditText">
        <item name="android:importantForAutofill">auto</item>
    </style>

Entonces, la propiedad de autocompletar funciona en 8.1. Se deshabilitará solo para 8.0 ya que el bloqueo se está produciendo en 8.0 y ya se ha solucionado en 8.1.

Después de actualizar algunos de nuestros dispositivos a Android 8.0, al enfocarse en un campo TextInputEditText dentro de un TextInputLayout , la aplicación se bloquea con esta Exception :

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'void
android.view.View.getBoundsOnScreen(android.graphics.Rect)' on a null object reference
at android.app.assist.AssistStructure$WindowNode.(AssistStructure.java)
at android.app.assist.AssistStructure.(AssistStructure.java)
at android.app.ActivityThread.handleRequestAssistContextExtras(ActivityThread.java:3035)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1807)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

Cuando vamos a Configuración de Android -> Sistema -> Idiomas y entrada -> Avanzado -> Servicio de autocompletar -> Ninguno , luego nos centramos en TextInputEditText / TextInputLayout ya no se bloquea.

¿Cómo podemos evitar que ocurra el bloqueo sin tener que deshabilitar el nuevo servicio 8.0 Auto-fill en los dispositivos?


Agregue el atributo mencionado a continuación en su EditText :

android:importantForAutofill="noExcludeDescendants"


Me encontré con esto también. Resulta que el problema fue causado al configurar el texto de la sugerencia en EditText anidado dentro de TextInputLayout .

Investigué un poco y encontré esta pepita en las notas de la versión 26.0.0 Beta 2. Notas de la versión de soporte de Android de junio de 2017

TextInputLayout debe establecer sugerencias sobre onProvideAutofillStructure ()

Eso me llevó a intentar configurar la sugerencia en TextInputLayout lugar del EditText anidado.

Esto resolvió el problema de bloqueo para mí. Ejemplo:

<android.support.design.widget.TextInputLayout
    android:id="@+id/textInputLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Some Hint Text"
    android.support.design:hintAnimationEnabled="true"
    android.support.design:hintEnabled="true"
    android.support.design:layout_marginTop="16dp">

    <android.support.design.widget.TextInputEditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</android.support.design.widget.TextInputLayout>

Publiqué esto como respuesta here mientras mezclaba los marcadores. Perdón por publicar la misma respuesta dos veces.


Puede establecer cualquier valor para importantForAutofill con un estilo o en el XML, es fijo para NPE cuando enfoca EditText, pero no es fijo si mantiene presionado EditText y hace clic en Autocompletar. Encontré un informe de error sobre este error here , agregue una estrella y comparta sus observaciones en el informe de error también.

Gracias.





android-textinputlayout