2010-08-17 22 views
10

Moja aplikacja łączy niektóre czynności.Przycisk Wstecz i ostatnia aktywność

jeśli naciśniesz przycisk Wstecz, wrócisz do poprzednich czynności, a następnie nagle zamkniesz aplikację!

więc muszę pokazać komunikat w stylu „czy naprawdę chcesz, aby wyjść”, jeśli jest to ostatnia aktywność na stosie

wiem jak zastąpić przycisk wstecz, ale nie mogę zrozumieć, jak wiemy, ilu aktywność jest w historii

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 
     // Is it the last activity on stack ? 
     // so show confirm dialog 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 

Proszę o pomoc.

+0

Czy twoja aplikacja nie ma głównej aktywności na poziomie root'a, gdzie możesz założyć, że to prawda? – iandisme

+6

Na marginesie - chciałbym odinstalować dowolną aplikację, która mnie budzi, gdy próbuję wyjść z niego za pomocą przycisku Wstecz. To aplikacja na telefon, a nie na dużą aplikację komputerową. – EboMike

+0

Zgadzam się z EboMike. Przejęcie przycisku wstecz nie jest dobrym pomysłem. – Falmarri

Odpowiedz

14

można osiągnąć przy użyciu funkcji() wykończenie

public void finish() { 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setMessage("do you really want to exit?"); 
     builder.setCancelable(false); 
     builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       quit(); 
      } 
     }); 
     builder.setNegativeButton("No", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       dialog.cancel(); 
      } 
     }); 
     AlertDialog alert = builder.create(); 
     alert.show(); 
    } 

    public void quit() { 
     super.finish(); 
    }; 
0

Nie musisz wiedzieć, ile są w history.You aktywność może to zrobić way.Invoke metodę onBackPressed(), gdy przycisk jest z powrotem Kliknięto.Następnie zastąp metodę meta() w głównym działaniu, aby wyświetlić okno dialogowe potwierdzenia. Z tego powodu metoda onBackPressed() wywołuje metodę finish() metody. Po utworzeniu kopii zapasowej do głównej czynności, przywoływana metoda finish() jest wywoływana, pojawi się dialog, który nadałeś.

Powiązane problemy