Autore Topic: "Chiudere" l'applicazione  (Letto 1953 volte)

Offline lucacali87

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg dual
  • Sistema operativo:
    windows seven
"Chiudere" l'applicazione
« il: 26 Maggio 2013, 10:34:36 CEST »
0
Salve, ho un problemino con un'app.In pratica quando torno alla home, activity principale, vorrei chiudere l'app con il doppio tap indietro, un pò come fanno molte applicazioni di file manager.
Ho fatto una cosa del genere ma il problema è che se avvio altre activity comunque non esce perchè ci sono le altre.Come potrei fare?
Codice (Java): [Seleziona]
//Gestione doppio tap per uscire
        @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)  {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
               
                Toast.makeText(getApplicationContext(), "Premi ancora per uscire!", Toast.LENGTH_LONG).show();
                onBackPressed();
        }
               
        return super.onKeyDown(keyCode, event);
    }
       
       

       
     @Override
     public void onBackPressed()
     {
             if(indietro_prima_volta)
             {
                     indietro_prima_volta = false;
             }
             else
             {
                     MainActivity.this.finish();
             }
     }

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:"Chiudere" l'applicazione
« Risposta #1 il: 26 Maggio 2013, 18:58:50 CEST »
+1
semplicemente metti questo in tutte le altre activity, e al posto di MainActivity.this.finish() chiami finish() e basta

Offline lucacali87

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg dual
  • Sistema operativo:
    windows seven
Re:"Chiudere" l'applicazione
« Risposta #2 il: 31 Maggio 2013, 17:40:50 CEST »
0
ti ringrazio., provo

edit:ora esce con un solo tap, entra due volte nella pressione(prima volta variabile è false e direttamente fa il secondo caso che è vera)
« Ultima modifica: 31 Maggio 2013, 18:14:29 CEST da lucacali87 »

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:"Chiudere" l'applicazione
« Risposta #3 il: 31 Maggio 2013, 19:33:54 CEST »
0
nel senso che esce dopo che lo premi solo una volta?

Offline lucacali87

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg dual
  • Sistema operativo:
    windows seven
Re:"Chiudere" l'applicazione
« Risposta #4 il: 31 Maggio 2013, 20:34:25 CEST »
0
esatto, mi esce scritto premi di nuovo per uscire ma nel frattempo già chiude

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:"Chiudere" l'applicazione
« Risposta #5 il: 31 Maggio 2013, 20:41:06 CEST »
0
ma hai messo:


Codice (Java): [Seleziona]
 @Override     public void onBackPressed()     {             if(indietro_prima_volta)             {                     indietro_prima_volta = false;             }             else             {                     finish();             }     }

e sopratutto in ogni Oncreate() setti indietro_prima_volta=true;
[/size]?

Offline lucacali87

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg dual
  • Sistema operativo:
    windows seven
Re:"Chiudere" l'applicazione
« Risposta #6 il: 31 Maggio 2013, 20:48:07 CEST »
0
si non capisco perchè fa tutto lui

Codice (Java): [Seleziona]
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;

import android.widget.ImageButton;
import android.widget.Toast;


public class MainActivity extends Activity {

        private ImageButton inserisci;
        private ImageButton visualizza;
       
       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
               
                inserisci = (ImageButton) findViewById(R.id.imageButton1);
                inserisci.setOnClickListener(new OnClickListener() {

                        public void onClick(View arg0) {
                                 //TODO Auto-generated method stub
                                Intent intent = new Intent(MainActivity.this,
                                                InserisciActivity.class);
                                startActivity(intent);
                        }
                });
               
                visualizza = (ImageButton) findViewById(R.id.imageButton2);
                visualizza.setOnClickListener(new OnClickListener() {

                        public void onClick(View arg0) {
                                // TODO Auto-generated method stub
                                Intent intent = new Intent(MainActivity.this,
                                                VisualizzaActivity.class);
                                startActivity(intent);
                        }
                });
               
        }
       

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.main, menu);
                return true;
        }
       
        //Gestione doppio tap per uscire
        @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)  {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {            
                Toast.makeText(getApplicationContext(), "Premi ancora per uscire!", Toast.LENGTH_LONG).show();
                                Log.i("Latitudine: ", "Premuto prima volta");
                onBackPressed();
        }
               
        return super.onKeyDown(keyCode, event);
    }
       
        boolean indietro_prima_volta = true;


       
     @Override
     public void onBackPressed()
     {
                        Log.i("Latitudine: ", String.valueOf(indietro_prima_volta));

             if(indietro_prima_volta)
             {
                 Log.i("Latitudine: ", "Richiamato prima volta cambio variabile");
                     indietro_prima_volta = false;
             }
             else
             {
                 Log.i("Latitudine: ", "Richiamato 2 volta");
                     this.finish();
             }
     }
}
« Ultima modifica: 02 Giugno 2013, 14:38:09 CEST da lucacali87 »

Offline NanoAndroide

  • Utente junior
  • **
  • Post: 63
  • Respect: +3
    • Google+
    • Mostra profilo
    • MeToo
  • Dispositivo Android:
    GT-S5570
  • Play Store ID:
    MeToo
  • Sistema operativo:
    Windows 7
Re:"Chiudere" l'applicazione
« Risposta #7 il: 04 Giugno 2013, 04:15:41 CEST »
0
si non capisco perchè fa tutto lui

Guarda bene, perchè non l'hai settata in onCreate() come ti ha suggerito gabric, ma fuori da ogni metodo, come field...  ;-)

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +153
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:"Chiudere" l'applicazione
« Risposta #8 il: 04 Giugno 2013, 11:13:12 CEST »
0
La chiusura dell'app è qualcosa che nelle linee guida android viene fortemente sconsigliata.
Non c'è alcun motivo di chiudere un'app, e infatti non c'è mai alcun tasto esci.


Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:"Chiudere" l'applicazione
« Risposta #9 il: 04 Giugno 2013, 11:31:21 CEST »
0
Concordo con GabMarioPower. Perchè l'utente dovrebbe premente due volte per uscire? Se preme back è perchè vuole uscire, non serve confermi l'operazione.

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:"Chiudere" l'applicazione
« Risposta #10 il: 04 Giugno 2013, 12:29:11 CEST »
0
Perfettamente d'accordo con GabMarioPower e Ricky`, però le linee guida di google non vengono prese in considerazione ovunque. Ad esempio se di vuole pubblicare nel samsung app store è obbligatorio che "chiudendo" un'applicazione con il back compaia un messaggio di richiesta di conferma all'utente, se non c'è non te la pubblicano e ti segnalano la cosa come da sistemare.

Offline lucacali87

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg dual
  • Sistema operativo:
    windows seven
Re:"Chiudere" l'applicazione
« Risposta #11 il: 04 Giugno 2013, 14:36:50 CEST »
0
ho scritto il codice come segue ma comunque esce con un click(a sto punto lascio pure così ma è per principio)
Diciamo che è seccante dover premere 300 volte indietro per uscire, quindi ho fatto in modo che premendo indietro dalle altre activity vado alla home.

Codice (Java): [Seleziona]
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;

import android.widget.ImageButton;
import android.widget.Toast;


public class MainActivity extends Activity {

        private ImageButton inserisci;
        private ImageButton visualizza;
        boolean indietro_prima_volta;

       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                indietro_prima_volta = true;
                inserisci = (ImageButton) findViewById(R.id.imageButton1);
                inserisci.setOnClickListener(new OnClickListener() {

                        public void onClick(View arg0) {
                                 //TODO Auto-generated method stub
                                Intent intent = new Intent(MainActivity.this,
                                                InserisciActivity.class);
                                startActivity(intent);
                        }
                });
               
                visualizza = (ImageButton) findViewById(R.id.imageButton2);
                visualizza.setOnClickListener(new OnClickListener() {

                        public void onClick(View arg0) {
                                // TODO Auto-generated method stub
                                Intent intent = new Intent(MainActivity.this,
                                                VisualizzaActivity.class);
                                startActivity(intent);
                        }
                });
               
        }
       

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.main, menu);
                return true;
        }
       
        //Gestione doppio tap per uscire
        @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)  {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {            
                Toast.makeText(getApplicationContext(), "Premi ancora per uscire!", Toast.LENGTH_LONG).show();
                                Log.i("Latitudine: ", "Premuto prima volta");
                onBackPressed();
        }
               
        return super.onKeyDown(keyCode, event);
    }
       


       
     @Override
     public void onBackPressed()
     {
                        Log.i("Latitudine: ", String.valueOf(indietro_prima_volta));

             if(indietro_prima_volta)
             {
                 Log.i("Latitudine: ", "Richiamato prima volta cambio variabile");
                     indietro_prima_volta = false;
             }
             else
             {
                 Log.i("Latitudine: ", "Richiamato 2 volta");
                     this.finish();
             }
     }
}

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +153
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:"Chiudere" l'applicazione
« Risposta #12 il: 04 Giugno 2013, 17:42:05 CEST »
0
Diciamo che è seccante dover premere 300 volte indietro per uscire, quindi ho fatto in modo che premendo indietro dalle altre activity vado alla home.
Perchè non sfrutti anche la navigazione UP ?

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:"Chiudere" l'applicazione
« Risposta #13 il: 04 Giugno 2013, 19:02:50 CEST »
0
e perchè non metti tutto nel onbackpressed? senza richiamare onKeyDown?
Inotlre nelle altre activity metti un cleartop nell'intent, così elimina tutte le activity precedenti e alla pressone sul tasto indietro chiude l'app direttamente


Offline lucacali87

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg dual
  • Sistema operativo:
    windows seven
Re:"Chiudere" l'applicazione
« Risposta #14 il: 04 Giugno 2013, 21:43:28 CEST »
0
ho seguito una guida che utilizzava questo metodo...prima andava, mi sembra strano, forse mi conviene toglierla proprio così premendo indietro dovrebbe uscire