2011-08-20 7 views
5

--The odpowiedź anonimowy jest moja odpowiedź, że rozwiązał ten problem z .--App zawiesza w Froyo i Gingerbread

I zostały pisania aplikacji dla Androida, wszystko działa dobrze w plaster miodu, ale nie grają ładny na moich urządzeniach FroYo & Gingerbread (przeciwieństwo tego, czego można się spodziewać po prawej).

Oto kod, który moim zdaniem jest przyczyną problemu:

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

Tu wdrażania zdolność ActionBar za ikona-up-to-home, dodałem zmienną versionNumber jak wierzyłem brak w ActionBar w urządzeniach pre-Honyecomb powodowało problem podczas działania, ale nadal się zawiesza i uważam, że to jest problem, chociaż jestem okropny z debugowaniem i nie rozumiem niczego, co daje mi logcat.

Edytuj: logcat - Mam nadzieję, że mam odpowiednią sekcję ?!

08-20 17: 21: 41,326: OSTRZEGAJ/ActivityManager (2707) Próba uruchomienia com.squirculardesign.android.pixel .o 08-20/17: 21: 41,346: informacji/dalvikvm (4059): Nie można znaleźć metody com.squirculardesign.android.pixel.About.getActionBar, z odniesieniem od metoda com.squirculardesign.android.pixel.About.onStart 08-20 17: 21: 41.346: WARN/dalvikvm (4059): VFY: nie można rozwiązać wirtualnej metody: metoda 54: Lcom/squirculardesign/android/pixel/About; .getActionBar () Landroid/app/ActionBar; 08-20 17: 21: 41.346: DEBUG/dalvikvm (4059): VFY: zamiana opcode 0x6e na 0x0011 08-20 17: 21: 41.346: DEBUG/dalvikvm (4059): VFY: martwy kod 0x0014-0018 w Lcom/squirculardesign/android/pixel/About; .onStart() V 08-20 17: 21: 41.386: INFO/ALSAModule (2588): Zainicjowane urządzenie ALSA ODTWARZANIE hifi 08-20 17: 21: 41.386: WARN/AudioFlinger (2588): napisz zablokowany dla 108 msecs, 3 opóźnione zapisy, wątek 0x5e758 08-20 17: 21: 41.406: DEBUG/dalvikvm (4059): GC_EXTERNAL_ALLOC zwolniony 38K, 52% bezpłatny 2621K/5379K, zewnętrzny 190K/518K , pauza 36ms 08-20 17: 21: 41.596: INFO/AudioFlinger (2588): zatrzymaj wyjście streamType (0, 1) dla 1 08-20 17: 21: 41.596: DEBUG/AudioHardwareYamaha (2588): AudioStreamOut :: setParameters (keyValuePairs = "stop_output_streamtype = 1") 08-20 17: 21: 42.096: BŁĄD/yamaha :: media :: Parametry (2588): SalesCode = OPS 08-20 17: 21: 42.671: BŁĄD/sygnalizatory (2707): write_int: ścieżka /sys/devices/virtual/misc/melfas_touchkey/brightness, wartość 2 08-20 17: 21: 42.671: WARN/PowerManagerService (2707): Timer 0x7-> 0x3 | 0x3 08-20 17: 21: 42.671: INFO/PowerManagerService (2707): Ule 7-> 3 | 0 08-20 17: 21: 42.671: DEBUG/PowerManagerService (2707): setLightBrightness: mButtonLight: 0 08-20 17: 21: 43.666: INFO/ALSAModule (2588): Zakończony Urządzenie ALSA ODTWARZANIE hifi 08-20 17: 21: 44.086: BŁĄD/yamaha :: media :: Parametry (2588): SalesCode = OPS 08-20 17 : 21: 51.181: WARN/Ac tivityManager (2707): upłynął limit czasu uruchamiania, porzucając blokadę wake! 08-20 17: 21: 51.336: WARN/ActivityManager (2707): Limit czasu bezczynności aktywności dla HistoryRecord {40a6f0a8 com.squirculardesign.android.pixel/.Obszar) 08-20 17: 21: 56.456: DEBUG/dalvikvm (2929): GC_EXPLICIT zwolniony 672K, 53% bezpłatny 3917K/8327K, zewnętrzny 12588K/12670K, wstrzymany 121ms 08-20 17: 22: 01.876: INFO/StatusBarPolicy (2834): onSignalStrengthsChanged 08-20 17:22:04.006: DEBUG/BatteryService (2707): aktualizacja start 08-20 17: 22: 04.011: ERROR/BatteryService (2707): status TMU = 0 08-20 17: 22: 04.011: DEBUG/BatteryService (2707): updateBattery poziom: 79 skala: 100 stan: 2 zdrowotnej: 2 obecny: true napięcie: 4050 temperatura: 270 technologia: litowo-jonowy zasilany prądem zmiennym: false zasilana przez USB: prawdziwą ikoną: 17302229

+0

Czy możesz wysłać błąd z logcat? – arunkumar

+0

Dodano, mam nadzieję, że skopiowałem prawidłową sekcję ?? Również; formatowanie jest skończone, przepraszam. – rabbitt

+0

Mówiąc, testowanie dokładnego numeru wersji SDK to zły pomysł. Przynajmniej powinieneś zrobić> =, aby być kompatybilnym z przyszłymi wersjami (gdy nie możesz sprawdzić konkretnej funkcji). – aberaud

Odpowiedz

6

To zawsze wydaje się stało, I zadać pytanie i problem staje się jaśniejsze w głowie po wyjaśnił to więc ktoś nie jest w stanie zrozumieć kontekst ...

Rozwiązaniem znalazłem:

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

ten rozwiązuje problem w obu Gingerbread & Froyo, różnica jest taka, że ​​super.onS tarta(); nas uruchomione bez względu na wszystko.

Dla tych, którzy nieuchronnie zamierzają komentować moją naprawę taśmą klejącą/taśmą klejącą: Ta konkretna aplikacja nie zawsze wymaga ActionBar, po prostu używałem elementów ActionBar w strukturze plastra miodu, ponieważ stało się to praktyką interfejsu użytkownika, aby uzyskać więcej akcji. To dlaczego nie realizować Ac

+1

To jest moja odpowiedź, którą znalazłem, ale muszę zamieścić anonimowo, ponieważ nie mogę zamieszczać odpowiedzi na moje własne pytanie przez 8 godzin, aż do mojego powtórzenia> 100, więc życzliwie daję +1 moje pytanie, abym mógł: P. – rabbitt

+1

Dlaczego nie super.onStart(), a następnie wykonaj linie paska akcji w if i bin w innym miejscu? – Hamid

3

masz rejestrowane co versionNumber faktycznie jest? Domyślam się, że twoje stwierdzenie jest jakoś prawdziwe. Więc spróbuj się zalogować, co wersjaNumer jest równa.

Należy naprawdę użyć

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

Sprawdź również to:

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

Musisz zadeklarować "item.getItemId() == android.R.id.home" i dziesięć "daj" THE nazwa Twojej aktywności domowej "YourHomeActivity.class". Teraz, gdy ktoś naciśnie przycisk "w górę" zostaniesz przekierowany do aktywności domowej "YourHomeActivity.class".

Powiązane problemy