2011-08-20 17 views
5

--La risposta anonima è la mia risposta che ho risolto questo problema con .--App si blocca in Froyo e Gingerbread

Ho scritto un app per Android, tutto funziona bene in nido d'ape, ma non giocare bello sul mio FroYo & Dispositivi di pan di zenzero (al contrario di quello che ti aspetteresti giusto).

Ecco il codice che credo è la causa del 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); 
    } 
} 

Qui implemento capacità icona-up-to-casa del ActionBar, ho aggiunto la variabile versionNumber come credevo la mancanza di un ActionBar nei dispositivi pre-Honyecomb stava causando il problema quando l'attività è stata eseguita, ma si blocca ancora e credo che questo sia il problema, anche se sono terribile con il debug e non capisco nulla di quello che mi viene dato da logcat.

Modifica: logcat - Spero di avere la sezione giusta ?!

08-20 17: 21: 41,326: WARN/ActivityManager (2707): Cercando di lanciare com.squirculardesign.android.pixel/.Informazioni 08-20 17: 21: 41,346: INFO/dalvikvm (4059): Impossibile trovare il metodo com.squirculardesign.android.pixel.About.getActionBar, referenziato dal metodo com.squirculardesign.android.pixel.About.onStart 08-20 17: 21: 41.346: WARN/dalvikvm (4059): VFY: impossibile risolvere il metodo virtuale 54: Lcom/squirculardesign/android/pixel/About; .getActionBar () Landroid/app/ActionBar; 08-20 17: 21: 41.346: DEBUG/dalvikvm (4059): VFY: sostituzione dell'opcode 0x6e a 0x0011 08-20 17: 21: 41.346: DEBUG/dalvikvm (4059): VFY: codice morto 0x0014-0018 in Lcom/squirculardesign/android/pixel/About; .onStart() V 08-20 17: 21: 41.386: INFO/ALSAModule (2588): dispositivo ALSA PLAYBACK inizializzato hifi 08-20 17: 21: 41.386: WARN/AudioFlinger (2588): scrittura bloccata per 108 msecs, 3 scritture ritardate, thread 0x5e758 08-20 17: 21: 41.406: DEBUG/dalvikvm (4059): GC_EXTERNAL_ALLOC liberato 38K, 52% gratuito 2621K/5379K, esterno 190K/518K , in pausa 36 ms 08-20 17: 21: 41.596: INFO/AudioFlinger (2588): stop output streamType (0, 1) per 1 08-20 17: 21: 41.596: DEBUG/AudioHardwareYamaha (2588): AudioStreamOut :: setParameters (keyValuePairs = "stop_output_streamtype = 1") 08-20 17: 21: 42.096: ERRORE/yamaha :: media :: Parametri (2588): SalesCode = OPS 08-20 17: 21: 42.671: ERRORE/luci (2707): write_int: percorso /sys/dispositivi/virtuale/misc/melfas_touchkey/luminosità, valore 2 08-20 17: 21: 42,671: WARN/PowerManagerService (2707): timer 0x7-> 0x3 | 0x3 08-20 17: 21: 42,671: INFO/PowerManagerService (2707): Ulight 7-> 3 | 0 08-20 17: 21: 42,671: DEBUG/PowerManagerService (2707): setLightBrightness: mButtonLight: 0 08-20 17: 21: 43.666: INFO/ALSAModule (2588): Terminato Hifi dispositivo ALSA PLAYBACK 08-20 17: 21: 44.086: ERRORE/yamaha :: media :: Parametri (2588): SalesCode = OPS 08-20 17 : 21: 51.181: WARN/Ac tivityManager (2707): Il timeout di avvio è scaduto, rinuncia al blocco della sveglia! 08-20 17: 21: 51.336: WARN/ActivityManager (2707): Timeout di inattività attività per HistoryRecord {40a6f0a8 com.squirculardesign.android.pixel/.About} 08-20 17: 21: 56.456: DEBUG/dalvikvm (2929): GC_EXPLICIT liberato 672K, 53% gratuito 3917K/8327K, esterno 12588K/12670K, sospeso 121ms 08-20 17: 22: 01.876: INFO/StatusBarPolicy (2834): onSignalStrengthsChanged 08-20 17:22:04.006: DEBUG/BatteryService (2707): aggiornamento 08-20 17: 22: 04.011: ERRORE/BatteryService (2707): stato TMU = 0 08-20 17: 22: 04.011: DEBUG/BatteryService (2707): updateBattery livello: 79 scala: 100 stato: 2 salute: 2 attuale: vera tensione: 4050 temperatura: 270 tecnologia: Li-ion AC alimentato: false USB: vera e propria icona: 17302229

+0

Puoi pubblicare l'errore da logcat? – arunkumar

+0

Aggiunto, spero di aver copiato la sezione corretta ?? Anche; la formattazione fa schifo. – rabbitt

+0

Solo dicendo, è una cattiva idea testare un numero esatto di versione dell'SDK. Almeno dovresti fare> = per essere compatibile con le versioni future (quando non riesci a trovare una particolare funzionalità). – aberaud

risposta

6

Questo sembra sempre accadere, faccio la domanda e il problema diventa più chiaro nella mia mente dopo aver spiegato in modo qualcuno non nel contesto poteva capire ...

la correzione che ho trovato era:

//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(); 
    } 
} 

questo risolve il problema in entrambe le Gingerbread & Froyo, la differenza è che super.onS crostata(); ci siamo attivati ​​indipendentemente da cosa.

Per quelli di voi che stanno inevitabilmente andando a commentare la mia correzione di nastro adesivo/appiccicoso: questa particolare app non ha bisogno di un ActionBar sempre, stavo solo usando gli elementi ActionBar in Honeycomb come è diventata la pratica dell'interfaccia utente per ottenere più azioni. Questo è il motivo per cui non ha attuato un Ac

+1

Questa è la mia risposta che ho trovato, ma devo postare anonimamente perché non posso pubblicare risposte alla mia stessa domanda per 8 ore fino al mio rappresentante> 100, quindi gentilmente +1 alla mia domanda così posso: P. – rabbitt

+1

Perché non super.onStart() prima, quindi eseguire le righe della barra delle azioni in if e bin else? – Hamid

3

vi siete loggato cosa versionNumber in realtà è? Immagino che la tua dichiarazione if sia in qualche modo vera. Quindi prova a registrare quale versioneNumber equivale.

Si dovrebbe usare

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

controllare anche questo:

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; 
} 

si deve dichiarare "item.getItemId() == android.R.id.home" e dieci "do" il nome della tua attività di casa "YourHomeActivity.class". Ora quando qualcuno preme il pulsante "su" verrai reindirizzato alla tua attività Home "YourHomeActivity.class".

Problemi correlati