¿Por qué la caída del teclado bloquea mi aplicación?
Si físicamente deslice el teclado en mi Moto Droid A855, se bloquea mi aplicación de prueba con la pila de seguimiento pegado a continuación. No entiendo por qué
Además, si inicio mi aplicación con el teclado, mi aplicación se bloquea inmediatamente al inicio.
- La forma más rápida y fácil de encontrar métodos en Java / Android que tardan un segundo o más en ejecutarse
- SQLite database, multithreading, bloqueos y sincronización de cuentas en android
- Excepción "OutOfMemory" sólo en Samsung Galaxy S3
- La aplicación de Android se bloquea después de un tiempo utilizando Fragments y ViewPager
- Deshabilitar keyGuard en Android 6.0
La aplicación consiste en una actividad, que contiene un viewflipper como el diseño de la vista principal. El viewflipper contiene dos lineares …
Rastro de la pila:
06-10 21:10:17.652 E/AndroidRuntime( 3785): Uncaught handler: thread main exiting due to uncaught exception 06-10 21:10:17.668 E/AndroidRuntime( 3785): java.lang.IllegalArgumentException: Receiver not registered: android.widget.ViewFlipper$1@447af0b8 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.app.ActivityThread$PackageInfo.forgetReceiverDispatcher(ActivityThread.java:667) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.app.ApplicationContext.unregisterReceiver(ApplicationContext.java:747) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:321) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.widget.ViewFlipper.onDetachedFromWindow(ViewFlipper.java:104) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.view.View.dispatchDetachedFromWindow(View.java:5835) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1076) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1074) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1074) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1074) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.view.ViewRoot.dispatchDetachedFromWindow(ViewRoot.java:1570) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.view.ViewRoot.doDie(ViewRoot.java:2556) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.view.ViewRoot.die(ViewRoot.java:2526) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:218) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.view.Window$LocalWindowManager.removeViewImmediate(Window.java:436) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3498) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3599) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.app.ActivityThread.access$2300(ActivityThread.java:119) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1867) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.os.Handler.dispatchMessage(Handler.java:99) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.os.Looper.loop(Looper.java:123) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.app.ActivityThread.main(ActivityThread.java:4363) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at java.lang.reflect.Method.invokeNative(Native Method) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at java.lang.reflect.Method.invoke(Method.java:521) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at dalvik.system.NativeStart.main(Native Method) 06-10 21:10:17.684 I/Process ( 1017): Sending signal. PID: 3785 SIG: 3
EDIT: diseño XML añadido y fragmentos relevantes de la actividad principal.
Todo el archivo de diseño XML
<?xml version="1.0" encoding="utf-8"?> <ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/vFlipper" android:layout_width="wrap_content" android:layout_height="wrap_content"> <!-- Linear Layout 1: messages and overview. --> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TableRow android:id="@+id/TableRow01" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:text="Connection info" android:id="@+id/tvCon1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#F0F0F0" android:textColor="#FF0000" /> </TableRow> <ScrollView android:id="@+id/ScrollView01" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/tvMessages" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="" /> </ScrollView> </LinearLayout> <!-- Linear Layout 2: settings --> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TableRow android:id="@+id/TableRow03" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:text="hello world" android:id="@+id/asdfasdf2" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </TableRow> </LinearLayout> </ViewFlipper>
Extractos de código de la actividad principal:
/** * Attempt (not currently working) to work around this bug: http://code.google.com/p/android/issues/detail?id=6191 * TODO: make it work. */ @Override public void onDetachedFromWindow() { Log.d("Dash","OnDetachedFromWindow()"); try { super.onDetachedFromWindow(); } catch (Exception e) { ViewFlipper v = (ViewFlipper)findViewById(R.id.vFlipper); if (v != null) { Log.d("Dash","De-Bug hit. e=" + e.getMessage()); v.stopFlipping(); } } }
- Android: el diseño de inflado toma mucho tiempo
- Excepción de la superficie de bloqueo, java.lang.IllegalArgumentException
- Android 6.0 Nexus 6 Crash en el controlador Adreno 420
- Si un wakelock es adquirido y mi aplicación se bloquea, ¿qué debo hacer?
- La aplicación de Android se reinicia al cerrar / cerrar fuerza
- Conexiones y bloqueo de SQLite
- ¿Por qué el AsyncTask de mi servicio bloquea AsyncTasks de la actividad principal?
- Android: ¿Qué es la asignación Proguard y ProGuard?
Para resolver este problema, debe
- Defina una nueva clase llamada
MyViewFlipper
que reemplaza aViewFlipper
(ver abajo) - Referencia de que la nueva clase en cualquier lugar que se han mencionado anteriormente
ViewFlipper
- Defina su clase y diseño como se muestra a continuación:
Nueva clase llamada MyViewFlipper
. Contiene lo siguiente:
package com.gtosoft.dash; // change this to match your own app. import android.content.Context; import android.util.AttributeSet; import android.util.Log; import android.widget.ViewFlipper; public class MyViewFlipper extends ViewFlipper { public MyViewFlipper(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDetachedFromWindow() { try{ super.onDetachedFromWindow(); }catch(Exception e) { Log.d("MyViewFlipper","Stopped a viewflipper crash"); stopFlipping(); } } }
Ahora, para usar esta versión "fija" de ViewFlipper
tienes que hacer referencia a ella en el diseño xml. Puesto que es básicamente una "vista personalizada", tiene que calificar completamente la ruta del paquete a MyViewFlipper
, como se ve aquí:
<com.gtosoft.dash.MyViewFlipper xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/vFlipper" android:layout_width="wrap_content" android:layout_height="wrap_content"> (insert all the other old layout code here) </com.gtosoft.dash.MyViewFlipper>
Ahora la aplicación ya no se bloquea en el evento de diapositivas de teclado o si se inicia la aplicación con la diapositiva ya fuera. Busque esto en el registro:
06-11 20:08:15.811 D/MyViewFlipper( 6106): Stopped a viewflipper crash
Crédito: http://code.google.com/p/android/issues/detail?id=6191
Es realmente difícil ayudarte si no proporcionas alguna parte de tu código … de todos modos, este error no es nuevo y hay algunas soluciones para solucionarlo (supongo que es un error) … intenta hacer esta:
@Override protected void onDetachedFromWindow() { try { super.onDetachedFromWindow(); } catch (IllegalArgumentException e) { stopFlipping(); } }
Esto es para reemplazar el onDetachedFromWindow
y espero que funcione para usted.
Sé que esta pregunta fue hecha hace casi dos años, pero desde entonces se ha implementado una solución muy fácil. Simplemente añada android:configChanges="orientation|keyboard|keyboardHidden"
en cada llamada de Actividad en el Manifiesto.
Sí, no veo este error antes .. pero de nuevo tengo esto en mi manifiesto
<activity android:name=".MainActivity" android:configChanges="keyboardHidden|navigation" android:label="@string/app_name" android:launchMode="singleTop" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
- Obtener una marca de tiempo para el inicio del día
- ¿Cómo deshabilita un botón dentro de un AlertDialog?