Autore Topic: Come uscire dall'applicazione  (Letto 2483 volte)

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Come uscire dall'applicazione
« il: 03 Settembre 2010, 16:22:14 CEST »
0
Ho creato una pagina che chiede all'utente se vuole uscire dall'applicazione
se preme sul si devo terminare la mia applicazione, cosa devo scrivere dentro al listener del bottone?
ho provato con this.finish ma non lo riconosce come comando valido

Codice (Java): [Seleziona]
private final Button.OnClickListener buttonOnClickEsci = new Button.OnClickListener() {
                public void onClick(View v) {                  
                       
                       this.finish();
                }
        };

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Come uscire dall'applicazione
« Risposta #1 il: 03 Settembre 2010, 16:43:46 CEST »
0
Puoi postare un po' più codice? Se possibile quello di tutta la activity, togliendo le parti di processing. Perchè in linea di principio dovrebbe funzionare.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:Come uscire dall'applicazione
« Risposta #2 il: 03 Settembre 2010, 16:48:49 CEST »
0
Codice (Java): [Seleziona]
public class MyMenu extends Activity {

        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.quizzi_menu);

                Button risposta_button_1 = (Button) findViewById(R.id.quizzi_menu_button_1);

                Button risposta_button_2 = (Button) findViewById(R.id.quizzi_menu_button_2);

                risposta_button_1.setOnClickListener(buttonOnClickEsci);

                risposta_button_2.setOnClickListener(buttonOnClickChiudiMenu);
        }

        private final Button.OnClickListener buttonOnClickEsci = new Button.OnClickListener() {
                public void onClick(View v) {

                qua devo dirgli di uscire dalla mia applicazione, ma non so cosa devo scrivere
                }
        };

        private final Button.OnClickListener buttonOnClickChiudiMenu = new Button.OnClickListener() {
                public void onClick(View v) {
                       
                        finish();
                }
        };
}

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Come uscire dall'applicazione
« Risposta #3 il: 03 Settembre 2010, 18:03:21 CEST »
0
Forse ho capito: l'activity dove hai questo listener non è l'activity principale, giusto?

In tal caso mi tornerebbe che non funzioni, perchè ad esempio l'applicazione si chiude con finish() nell'activity principale, ma se sei in una activity secondaria, si chiudi quella. E' questo il tuo caso?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Come uscire dall'applicazione
« Risposta #4 il: 03 Settembre 2010, 18:05:14 CEST »
0
con un this all'interno di un listener, ti riferisci al listener stesso , il quale non ha il metodo finish();

quindi, chiama finish() senza il this , oppure MyMenu.this.finish()

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:Come uscire dall'applicazione
« Risposta #5 il: 03 Settembre 2010, 20:07:27 CEST »
0
bradipao ti confermo che non sono nell'activity principale
quindi che istruzione devo usare per chiudere il programma?

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:Come uscire dall'applicazione
« Risposta #6 il: 04 Settembre 2010, 17:09:19 CEST »
0
ho provato con l'istruzione Syustem.exit(0); ma non chiude il programma (ripeto, non sono nell'activity principale)

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Come uscire dall'applicazione
« Risposta #7 il: 04 Settembre 2010, 17:41:28 CEST »
0
bradipao ti confermo che non sono nell'activity principale
quindi che istruzione devo usare per chiudere il programma?

Ok, riassumo il tutto così ti accerti che abbia compreso la situazione.

Dall'activity principale A lanci un'activity secondaria B. Nel menu dell'activity B se usi finish, come vedo nel secondo estratto di codice che hai postato, si chiude l'activity B e torni alla A. Però tu vorresti implementare anche l'uscita dal programma, cioè l'uscita sia da B che da A.

Che io sappia non esiste un metodo semplice e immediato per farlo.

Se dovessi implementare una cosa del genere io farei in modo che chiudendo l'activity B si invia un risultato all'activity A e in base a quel risultato l'activity A decide se chiudersi o meno.

Per fare questa cosa, invece di usare startActivity(), usa startActivityForResult(). Poi dentro l'activity B fai in modo che quando devi uscire dall'applicazione venga restituito un ben preciso flag con setResult() poi usi il solito finish(). A questo punto nella onActivityResult() della activity A, se vedi quel flag, chiami il finish() della activity A stessa. Probabilmente è più complicato a spiegare che a farsi.
« Ultima modifica: 04 Settembre 2010, 17:45:59 CEST da bradipao »
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

vincenzodicicco

  • Visitatore
Re:Come uscire dall'applicazione
« Risposta #8 il: 04 Settembre 2010, 17:46:44 CEST »
0
L'activity che chiede se chiudere o meno l'avvii con uno startActivity() vero? bene prova a fare cosi:
Codice (Java): [Seleziona]
startActivity(........); // avvi l'activity che chiede della chiusura
finish();  //chiudi l'activity principale

mentre l'activity di chiusura dovrà essere di questo tipo:
Codice (Java): [Seleziona]
        private final Button.OnClickListener buttonOnClickEsci = new Button.OnClickListener() {
                public void onClick(View v) {
                finish(); // e chiuderà l'applicazione
                }
        };
mentre il pulsante annulla dovrà diventare così:
Codice (Java): [Seleziona]
        private final Button.OnClickListener buttonOnClickChiudiMenu = new Button.OnClickListener() {
                public void onClick(View v) {
                       startActivity(.......) // avvi l'activity principale
                       finish(); //chiudi l'activity di chiusura
                }
        };


vincenzodicicco

  • Visitatore
Re:Come uscire dall'applicazione
« Risposta #9 il: 04 Settembre 2010, 17:50:22 CEST »
0
Ok, riassumo il tutto così ti accerti che abbia compreso la situazione.

Dall'activity principale A lanci un'activity secondaria B. Nel menu dell'activity B se usi finish, come vedo nel secondo estratto di codice che hai postato, si chiude l'activity B e torni alla A. Però tu vorresti implementare anche l'uscita dal programma, cioè l'uscita sia da B che da A.

Che io sappia non esiste un metodo semplice e immediato per farlo.

Se dovessi implementare una cosa del genere io farei in modo che chiudendo l'activity B si invia un risultato all'activity A e in base a quel risultato l'activity A decide se chiudersi o meno.

Per fare questa cosa, invece di usare startActivity(), usa startActivityForResult(). Poi dentro l'activity B fai in modo che quando devi uscire dall'applicazione venga restituito un ben preciso flag con setResult() poi usi il solito finish(). A questo punto nella onActivityResult() della activity A, se vedi quel flag, chiami il finish() della activity A stessa. Probabilmente è più complicato a spiegare che a farsi.

Tempo fa stavo provando questa soluzione, però JD mi chiese se avevo provato a lanciare una nuova activity e chiuderla, in teoria, navigavi tra le varie activity senza creare uno stack ad ogni nuovo avvio veniva chiusa la precedente ecc, mi sono sono sempre trovato bene con questo metodo :-) ovviamente non per quelle applicazioni che devono mantenere la gerarchia di activity.  ;-)

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Come uscire dall'applicazione
« Risposta #10 il: 04 Settembre 2010, 19:29:41 CEST »
0
Postate il LogCat LogCat LogCat LogCat LogCat

vincenzodicicco

  • Visitatore
Re:Come uscire dall'applicazione
« Risposta #11 il: 04 Settembre 2010, 20:01:03 CEST »
0
Hai provato con questo?
Chiudere la propria app - Android Developers Italia
Blackgin, volevo segnalare il tuo post a andream1977, la tua soluzione funzionerà al 100% nel suo caso, però questo non può provocare qualche problema? ho è una soluzione che si può usare tranquillamente?

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:Come uscire dall'applicazione
« Risposta #12 il: 05 Settembre 2010, 18:56:08 CEST »
0
Grazie a tutti delle risposte
ho scelto e funziona, la risposta di vincenzodicicco
cioè ogni volta che chiamo un'activity finisco con l'istruzione finish:
Codice (Java): [Seleziona]
startActivity(.......) // avvi l'activity principale
 finish(); //chiudi l'activity di chiusura
In questo modo quando premo su "esci" dal menu della mia app, richiamo il metodo finish e l'app si chiude (anche se rimane in background ma questo lo deve fare perchè è il comportamento standard)