2013-03-08 20 views
5

Ho un'attività che mantiene il segnale acustico fino al momento in cui l'utente fa clic su un pulsante. Facendo clic sul pulsante, visualizza un messaggio. Dopo aver visualizzato il messaggio, invece di premere il pulsante Indietro per uscire, desidero che la mia attività esca autonomamente.Tornare alla schermata iniziale al termine dell'attività

Il metodo finish() esegue questa operazione? Se sì, come e dove dovrei implementarlo?

Qualsiasi tipo di aiuto sarà apprezzato. Grazie

risposta

7
Intent i= new Intent("package.homescreenactivity");//homescreen of your app. 
    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY); 
    startActivity(i); 
    finish(); 

Torna alla schermata iniziale cancellando lo stack di attività.

Per capire l'intero concetto ti suggerisco di dare un'occhiata a questo sito. http://developer.android.com/guide/components/tasks-and-back-stack.html. Il sito parla di come funziona il back stack di attività.

Aggiornamento: (15 Agosto 2014)

Clearing Backstack non può essere una buona idea. Si prega di dare un'occhiata alle linee guida di progettazione di navigazione efficace.

Il pulsante Indietro consente di tornare all'attività precedente.

check

http://developer.android.com/design/patterns/navigation.html

+1

Scusa se non ero chiaro. Intendevo la schermata iniziale predefinita del telefono Android. Questo torna ad esso? – newbee

+0

Controlla il post modificato. – Raghunandan

+0

capito! grazie :) – newbee

1

Applicare finitura() il metodo in tutte le attività. Tornerà alla schermata principale al termine dell'attività.

1

Caso 1: Per Fare clic sul pulsante

public void onClick(View v) { 
    // Show message here 
    moveTaskToBack(true); 
    } 

Caso 2: Se si vuole chiedere all'utente di andare a casa

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

      AlertDialog.Builder alertbox = new AlertDialog.Builder(this); 
      alertbox.setTitle(res.getString("Title")); 
      alertbox.setMessage(res.getString("Exit")); 
      alertbox.setIcon(R.drawable.logo); 
      alertbox.setPositiveButton(res.getString(R.string.Yes), 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface arg0, int arg1) { 
          exit(); 
         } 
        }); 

      alertbox.setNeutralButton(res.getString(R.string.No), 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface arg0, int arg1) { 
         } 
        }); 

      alertbox.show(); 
      return true; 
     } 

     return super.onKeyDown(keyCode, event); 
    } 

    private void exit() { 
     moveTaskToBack(true); 

    } 
1

Supponendo che si sta mostrando il messaggio come un alertdialog, chiamare finish() su la pressione del pulsante di alertdialog.

Se si utilizza Toast(), chiamare finish() alla pressione del pulsante dopo che è stato visualizzato Toast().

0

è possibile applicare il metodo finish() al pulsante onClick() e dopo la chiamata startActivity() è possibile applicare il metodo di finitura come mostrato di seguito.

startActivity(intent obj); 
finish(); 
Problemi correlati