2010-10-28 11 views
5

Se l'utente preme ripetutamente il pulsante Indietro, ho bisogno di un modo per rilevare quando si trovano nell'ultima attività della mia attività/app e mostrare "Uscire? " prima di tornare alla schermata iniziale o qualsiasi altra app precedente che avevano in esecuzione.visualizza finestra di dialogo sì/No prima di uscire dall'app tramite pulsante Indietro

È abbastanza semplice agganciare onkeypressed(), ma come faccio a capire che si tratta di un'attività "ultima" nell'attività?

+3

Sei sicuro di voler fare questo? Sembra piuttosto fastidioso. L'utente scopre rapidamente cosa significa back e capisce che potrebbero essere usciti dall'app. –

+3

Cosa c'è nel caso del voto negativo? Dice chiaramente di votare le domande "non chiare o non utili", questo non è né l'uno né l'altro. Potrebbe non essere il modo consigliato di fare le cose, ma non credo che questa domanda debba essere votata per questo. Votare di nuovo. – ShadowGod

risposta

6

Penso che si possa utilizzare smth come questo nella tua attività per verificare se è l'ultimo :

private boolean isLastActivity() { 
    final ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
    final List<RunningTaskInfo> tasksInfo = am.getRunningTasks(1024); 

    final String ourAppPackageName = getPackageName(); 
    RunningTaskInfo taskInfo; 
    final int size = tasksInfo.size(); 
    for (int i = 0; i < size; i++) { 
     taskInfo = tasksInfo.get(i); 
     if (ourAppPackageName.equals(taskInfo.baseActivity.getPackageName())) { 
      return taskInfo.numActivities == 1; 
     } 
    } 

    return false; 
} 

Ciò richiederà anche di aggiungere un permesso per il vostro AndroidManifest.xml:

<uses-permission android:name="android.permission.GET_TASKS" /> 

Così nel vostro ACTIVITA si può semplicemente utilizzare il seguente:

public void onBackPressed() { 
    if (isLastActivity()) { 
     showDialog(DIALOG_EXIT_CONFIRMATION_ID); 
    } else { 
     super.onBackPressed(); // this will actually finish the Activity 
    } 
} 

Poi nel youd dialogo gestire il tasto di scatto per chiama Activity.finish().

+0

geniale! grazie. – Saideira

2

Si prega di rivedere la Android Application Fundamentals, questo viola il comportamento promosso di un'applicazione Android:

Quando l'utente preme il tasto BACK, lo schermo non visualizza l'attività che l'utente appena lasciato (l'attività principale del compito precedente). Piuttosto, l'attività in cima allo stack viene rimossa e viene visualizzata l'attività precedente nella stessa attività.
+0

Vorrei che vivessimo in un mondo perfetto, ma purtroppo. Il cliente vuole la finestra di dialogo. Quindi, c'è un modo per dare un'occhiata allo stack di attività/attività globale? – Saideira

+0

Sì, sono d'accordo che i clienti vogliono cose a cui erano abituati. Con alcuni tipi di clienti non possiamo semplicemente dire "No" e dobbiamo solo fare quello che vogliono. Controlla la mia risposta su come fare ciò che ti serve. –

Problemi correlati