2009-11-17 16 views
7

Mam 3 Aktywności, które nieustannie przechodzi mój użytkownik. Kiedy użytkownik wraca do głównego ekranu, muszę zakończyć poprzednią historię, aby użytkownik nie mógł nacisnąć przycisku powrotu i skończył na ekranie nr 2, jaki byłby dobry sposób na zrobienie czegoś takiego? BTW - Używam 1.6 (poziom API 4)Android - wyczyść historię podczas przechodzenia między Aktywnościami

Powtarzam - mówię, że nie wiem lub nie przewiduję ścieżki, która prowadzi mnie do oryginalnego widoku. Ale po załadowaniu chcę wyczyścić historię, która doprowadziła użytkownika do tego widoku. W wersji 2.0 jest to możliwe z zastąpieniem Activity # onBackPressed ale muszę coś takiego w 1,6

Odpowiedz

1

OK, zakładam, że masz 3 czynności, A, B i C. A jest głównym ekranem, a użytkownik przejdzie przez te 3 strony. Ale gdy użytkownik wprowadzi A, zdarzenie onBackPresed należy wykonać jako wyjście. Czy mogę to wyjaśnić?

W takiej sytuacji, gdy próbujesz uruchomić A z B lub C, możesz dodać Intent.FLAG_ACTIVITY_CLEAR_TOP do Intencji, wtedy stos historii zostanie wyczyszczony i będzie tylko A w twoim stosie.

Jeśli chcesz przechwycić zdarzenie z kluczem wstecznym, nie musisz zastępować onBackPressed(). Zawsze używamy onKeyDown, zanim ta metoda będzie dostępna.

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 

    } 
    return super.onKeyDown(keyCode, event); 
} 
1

co wiem Jeśli chcesz wyczyścić historię aktywności można zrobić na dwa sposoby

(1). W pliku manifest.xml

Można także zaimplementować to z pliku AndroidManifest.xml, po prostu dodając androida: Nohistory = "true" atrybut w tych chcesz

przykład

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.rdc.activity" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="xx" /> 

    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".PickGalleryImageActivity" 
        android:label="@string/app_name" 
        android:noHistory="true"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

    </application> 
</manifest> 

(2). W kodzie Java

można dodać tę flagę, kiedy rozpocząć działalność Intent.FLAG_ACTIVITY_NO_HISTORY

przykład

Intent intent = new Intent(this, SomeOtherClass.class); 

// do not keep this intent in history 
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 

startActivity(intent); 

a drugi jest, jeśli szukasz Wstecz upalowaniem poniżej przykład może ci pomóc

Jeśli szukasz androida api poziom upto 1.6.

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
    //todo here 
    return true; 
    } 
    return super.onKeyDown(keyCode, event);  
} 

Hope To ci pomoże!

Powiązane problemy