Autore Topic: Chiusura applicazione  (Letto 536 volte)

Offline Guccio92

  • Utente junior
  • **
  • Post: 66
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7 64bit/ Mavericks 10.9
Chiusura applicazione
« il: 30 Giugno 2015, 08:38:20 CEST »
0
Ciao a tutti ragazzi, volevo sapere come poter gestire il tasto fisico back, momentaneamente alla pressione non fa altro che richiamare le activity in ordine al contrario.
Io vorrei che con il doppio click mi si chiudesse l'applicazione e magari con un toast di conferma.
Grazie mille.

Offline LinkOut

  • Utente normale
  • ***
  • Post: 272
  • Respect: +38
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Chiusura applicazione
« Risposta #1 il: 30 Giugno 2015, 09:00:13 CEST »
+2
Codice (Java): [Seleziona]
@Override
public void onBackPressed() {
    if (doubleBackToExitPressedOnce) {
        super.onBackPressed();
        return;
    }

    this.doubleBackToExitPressedOnce = true;
    Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();

    new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            doubleBackToExitPressedOnce=false;                      
        }
    }, 2000);
}

java - Android: clicking TWICE the back button to exit activity - Stack Overflow

Il metodo che viene chiamato quando l'utente preme il tasto back del telefono è : onBackPressed()

ovviamente devi dichiarare doubleBackToExitPressedOnce
Codice (Java): [Seleziona]
private boolean doubleBackToExitPressedOnce = false;
NB:
Se vuoi che una specifica Activity chiuda l'applicazione"deve essere l'unica aperta", se io apro 5 Activity, e alla quinta voglio che si chiuda l'applicazione, devo chiudere anche le altre 4 aperte dietro se no ovviamente ciò non accade.

Saluti.
« Ultima modifica: 30 Giugno 2015, 09:01:51 CEST da LinkOut, Reason: Edit NB »

Offline Guccio92

  • Utente junior
  • **
  • Post: 66
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7 64bit/ Mavericks 10.9
Re:Chiusura applicazione
« Risposta #2 il: 30 Giugno 2015, 09:25:33 CEST »
0
Ti ringrazio, vorrei che in ogni activity chiuda l'app.
Dove va inserito quel codice?,
 ti posto l'esempio della mia home page. Che più o meno e tutto simile. molto semplice così.
Codice (Java): [Seleziona]
package appinventor.ai_ivo_guccione.Giorgi_App3;


import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageButton;

import com.parse.Parse;
import com.parse.ParseAnalytics;
import com.parse.ParseInstallation;
import com.parse.ParsePush;
import com.parse.PushService;


public class MainActivity extends ActionBarActivity {
    public Intent intent;
    ImageButton pulsante1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

      ParseAnalytics.trackAppOpenedInBackground(getIntent());

        PushService.setDefaultPushCallback(this, MainActivity.class);
        ParseInstallation.getCurrentInstallation().saveInBackground();



        //Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton1);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, Eventi.class);
                startActivity(intent);
            }
        });

        //Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, ActivityCibo.class);
                startActivity(intent);
            }
        });

        //Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton2);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, ActivityBar.class);
                startActivity(intent);
            }
        });
        //Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton3);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, ActivityAttrazzioni.class);
                startActivity(intent);
            }
        });
        //Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton8);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, ActivityMuoversi.class);
                startActivity(intent);
            }
        });
        //Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton5);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, ActivityShop.class);
                startActivity(intent);
            }
        });

        //Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton6);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, ActivitySpiagge.class);
                startActivity(intent);
            }
        });

        //Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton12);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, Evento11.class);
                startActivity(intent);
            }
        });

//Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton10);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, MapsActivity.class);
                startActivity(intent);
            }
        });

//Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton4);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, ActivityCostruzioni.class);
                startActivity(intent);
            }
        });
        //Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton7);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, ActivityCostruzioni.class);
                startActivity(intent);
            }
        });
        //Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton11);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, ActivityCostruzioni.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.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

}

Post unito: 30 Giugno 2015, 11:21:23 CEST
Scusa?
« Ultima modifica: 30 Giugno 2015, 11:21:23 CEST da Guccio92, Reason: Merged DoublePost »

Offline LinkOut

  • Utente normale
  • ***
  • Post: 272
  • Respect: +38
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Chiusura applicazione
« Risposta #3 il: 30 Giugno 2015, 11:35:35 CEST »
0
Citazione
Dove va inserito quel codice?,

Penso che a questo tu ci possa arrivare.

Offline Guccio92

  • Utente junior
  • **
  • Post: 66
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7 64bit/ Mavericks 10.9
Re:Chiusura applicazione
« Risposta #4 il: 30 Giugno 2015, 11:42:17 CEST »
0
Ho provato a inserirlo 
Codice (Java): [Seleziona]
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

      ParseAnalytics.trackAppOpenedInBackground(getIntent());

        PushService.setDefaultPushCallback(this, MainActivity.class);
        ParseInstallation.getCurrentInstallation().saveInBackground();



        //Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton1);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, Eventi.class);
                startActivity(intent);
            }
        });

        //Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, ActivityCibo.class);
                startActivity(intent);
            }
        });

        //Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton2);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, ActivityBar.class);
                startActivity(intent);
            }
        });
        //Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton3);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, ActivityAttrazzioni.class);
                startActivity(intent);
            }
        });
        //Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton8);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, ActivityMuoversi.class);
                startActivity(intent);
            }
        });
        //Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton5);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, ActivityShop.class);
                startActivity(intent);
            }
        });

        //Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton6);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, ActivitySpiagge.class);
                startActivity(intent);
            }
        });

        //Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton12);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, Evento11.class);
                startActivity(intent);
            }
        });

//Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton10);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, MapsActivity.class);
                startActivity(intent);
            }
        });

//Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton4);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, ActivityCostruzioni.class);
                startActivity(intent);
            }
        });
        //Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton7);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, ActivityCostruzioni.class);
                startActivity(intent);
            }
        });
        //Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton11);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, ActivityCostruzioni.class);
                startActivity(intent);
            }
        });
//Inializzazione del Button
        pulsante1 = (ImageButton) findViewById(R.id.imageButton21);


        //Listener
        pulsante1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(MainActivity.this, MainActivityE.class);
                startActivity(intent);
            }
        });

    }

@Override---------------------------------------------------------------------------------------------------------------------------------------------
public void onBackPressed() {
    if (doubleBackToExitPressedOnce) {
        super.onBackPressed();
        return;
    }

    this.doubleBackToExitPressedOnce = true;
    Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();

    new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            doubleBackToExitPressedOnce=false;                      
        }
    }, 2000);
}



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

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:Chiusura applicazione
« Risposta #5 il: 01 Luglio 2015, 00:55:47 CEST »
0
Ciao a tutti ragazzi, volevo sapere come poter gestire il tasto fisico back, momentaneamente alla pressione non fa altro che richiamare le activity in ordine al contrario.
Io vorrei che con il doppio click mi si chiudesse l'applicazione e magari con un toast di conferma.
Grazie mille.

Mettiti nei panni di un utente.
Ogni volta che clicca indietro, pattern usato da qualsiasi utente Android, si ritrova (per come è l'implementazione suggerita sopra) a vedere un Toast che lo avverte che cliccando due volte si chiude l'app. E questo avviene in ogni Activity.
Ti viene il dubbio che possa essere un valido motivo per disinstallare l'app dopo 5 secondi.


Offline Guccio92

  • Utente junior
  • **
  • Post: 66
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7 64bit/ Mavericks 10.9
Re:Chiusura applicazione
« Risposta #6 il: 01 Luglio 2015, 08:09:41 CEST »
0
Come potrei fare allora? Sarebbe meglio che ad esempio ogni volta che si preme (poche volte il tasto back) faccia subito tornare all'home page perché se lo faccio io con la mia applicazione mi riapre ogni singola activity che ho fatto partire. Spero di essere stato abbastanza chiaro.
Grazie mille comunque.