2011-08-20 10 views
5

--La respuesta anónima es mi respuesta que he resuelto este problema con .--La aplicación se cierra en Froyo y Gingerbread

he estado escribiendo una aplicación para Android, todo está funcionando bien en nido de abeja, pero no jugar limpio en mis dispositivos Froyo & Gingerbread (opuestos a lo que esperarías).

Este es el código que creo que está causando el problema:

@Override 
protected void onStart() { 
    int versionNumber = Integer.valueOf(android.os.Build.VERSION.SDK); 
    if (versionNumber == 11) { 
     super.onStart(); 
     ActionBar actionBar = this.getActionBar(); 
     actionBar.setDisplayHomeAsUpEnabled(true); 
    } 
} 

Aquí implemento capacidad-icono-up-a la casa de la Barra de acciones, he añadido la variable versionNumber como creía la falta de una Barra de acciones en los dispositivos anteriores a Honyecomb estaba causando el problema cuando se ejecutó la actividad, pero aún se bloquea y creo que este es el problema, aunque soy terrible con la depuración y no entiendo nada de lo que me da logcat.

Edit: logcat - ¡Espero tener la sección correcta ?!

08-20 17: 21: 41.326: WARN/ActivityManager (2707): Tratar de lanzar com.squirculardesign.android.pixel/.Sobre 08-20 17: 21: 41.346: INFO/dalvikvm (4059): no se pudo encontrar el método com.squirculardesign.android.pixel.About.getActionBar, referenciado desde método com.squirculardesign.android.pixel.About.onStart 08-20 17: 21: 41.346: WARN/dalvikvm (4059): VFY: no se puede resolver el método virtual 54: Lcom/squirculardesign/android/pixel/About; .getActionBar () Landroid/app/ActionBar; 08-20 17: 21: 41.346: DEBUG/dalvikvm (4059): VFY: reemplazando el código de operación 0x6e en 0x0011 08-20 17: 21: 41.346: DEBUG/dalvikvm (4059): VFY: código 0x0014-0018 en Lcom/squirculardesign/android/pixel/About; .onStart() V 08-20 17: 21: 41.386: INFO/ALSAModule (2588): Dispositivo de REPRODUCCIÓN ALSA inicializado hifi 08-20 17: 21: 41.386: WARN/AudioFlinger (2588): escritura bloqueada para 108 msecs, 3 escrituras diferidas, subproceso 0x5e758 08-20 17: 21: 41.406: DEPURACIÓN/dalvikvm (4059): GC_EXTERNAL_ALLOC liberado 38K, 52% libre 2621K/5379K, externo 190K/518K , en pausa 36 ms 08-20 17: 21: 41.596: INFO/AudioFlinger (2588): detener salida tipo de secuencia (0, 1) para 1 08-20 17: 21: 41.596: DEBUG/AudioHardwareYamaha (2588): AudioStreamOut :: setParameters (keyValuePairs = "stop_output_streamtype = 1") 08-20 17: 21: 42.096: ERROR/yamaha :: media :: Parámetros (2588): SalesCode = OPS 08-20 17: 21: 42.671: ERROR/luces (2707): write_int: ruta /sys/devices/virtual/misc/melfas_touchkey/brillo, valor 2 08-20 17: 21: 42.671: WARN/PowerManagerService (2707): Temporizador 0x7-> 0x3 | 0x3 08-20 17: 21: 42.671: INFO/PowerManagerService (2707): Ulight 7-> 3 | 0 08-20 17: 21: 42.671: DEPURACIÓN/PowerManagerService (2707): setLightBrightness: mButtonLight: 0 08-20 17: 21: 43.666: INFO/ALSAModule (2588): Terminado Dispositivo ALSA PLAYBACK hifi 08-20 17: 21: 44.086: ERROR/yamaha :: media :: Parámetros (2588): SalesCode = OPS 08-20 17 : 21: 51.181: WARN/Ac tivityManager (2707): el tiempo de espera de inicio ha expirado, renunciando a Wake Lock! 08-20 17: 21: 51.336: WARN/ActivityManager (2707): Tiempo de inactividad de la actividad para HistoryRecord {40a6f0a8 com.squirculardesign.android.pixel/.About} 08-20 17: 21: 56.456: DEBUG/dalvikvm (2929): GC_EXPLICIT liberado 672K, 53% libre 3917K/8327K, externo 12588K/12670K, pausa 121ms 08-20 17: 22: 01.876: INFO/StatusBarPolicy (2834): onSignalStrengthsChanged 08-20 17:22:04.006: DEBUG/BatteryService (2707): inicio de actualización 08-20 17: 22: 04.011: ERROR/BatteryService (2707): estado de TMU = 0 08-20 17: 22: 04.011: DEBUG/BatteryService (2707): updateBattery nivel: 79 escala: 100 estado: 2 de salud: 2 presentes: la verdadera tensión: 4050 temperatura: 270 tecnología: AC Li-ion de corriente: falsa USB suministro de corriente: verdadero icono: 17302229

+0

¿Puedes publicar el error de logcat? – arunkumar

+0

Agregado, espero haber copiado la sección correcta ?? También; el formateo apesta lo siento. – rabbitt

+0

Solo digo que es una mala idea probar un número de versión de SDK exacto. Al menos debe hacer> = para ser compatible con versiones futuras (cuando no puede verificar una característica en particular). – aberaud

Respuesta

6

Esto siempre parece suceder, hago la pregunta y el problema se vuelve más clara en mi mente después de haber explicado que para que alguien no en el contexto podía entender ...

la solución que encontré fue:

//Sets the icon to 'go home' button 
@Override 
protected void onStart() { 
    int versionNumber = Integer.valueOf(android.os.Build.VERSION.SDK); 
    if (versionNumber >= 11) { 
      super.onStart(); 
      ActionBar actionBar = this.getActionBar(); 
      actionBar.setDisplayHomeAsUpEnabled(true); 
    } 
    else { 
      super.onStart(); 
    } 
} 

esto soluciona el problema, tanto en pan de jengibre & Froyo, la diferencia es que super.onS tarta(); nosotros disparamos sin importar qué.

Para aquellos de ustedes que inevitablemente van a comentar mi corrección de cinta pegajosa/pegajosa: esta aplicación particular no necesita una barra de acción siempre, solo estaba usando los artículos de ActionBar en Honeycomb ya que se ha convertido en la práctica de UI para obtener mas acciones. Esto es por lo que no puso en práctica un Ac

+1

Esta es mi respuesta que encontré, pero tengo que publicar de forma anónima, ya que no puedo publicar respuestas a mi propia pregunta durante 8 horas hasta mi representante> 100, así que amablemente haga +1 a mi pregunta para poder: P. – rabbitt

+1

¿Por qué no super.onStart() primero, luego haz las líneas de la barra de acciones en el if y bin el else? – Hamid

3

¿Ha iniciado sesión lo versionNumber ¿en realidad es? Supongo que tu declaración if de alguna manera es verdad. Intente registrar lo que versionNumber es igual.

realmente debería usar

int versionNumber = android.os.Build.VERSION.SDK_INT 
0

Check también esto:

public boolean onOptionsItemSelected(MenuItem item) { 

if(item.getItemId()==android.R.id.home){ 
    Intent intent = new Intent(this, YourHomeActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 
    return true; 
} 

Usted tiene que declarar "item.getItemId() == android.R.id.home" y diez "dar" la nombre de su actividad en el hogar "YourHomeActivity.class". Ahora, cuando alguien presione el botón "arriba", se le redirigirá a su actividad de Inicio "YourHomeActivity.class".

Cuestiones relacionadas