CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: 9mm con ben 3 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 8 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 29 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 1 su 1
Discussione:

[Tutorial] Chiudere app da activity secondaria

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Oct 2011
    Messaggi
    43

    Ringraziamenti
    0
    Ringraziato 8 volte in 8 Posts
    Predefinito

    [Tutorial] Chiudere app da activity secondaria

    Per chiudere correttamente un Activity si usa “this.finish()”. Ma questo comporta la chiusura dell’activity in cui siamo, se è un Activity principale si uscirà totalmente dall’applicazione, altrimenti torneremo all’Activity precedente. Se per esempio abbiamo un menu come Activity secondaria, e vogliamo che dal menu sia possibile chiudere totalmente l’applicazione, dovremmo aprire il menu con un Activity for result.

    Esempio:

    Creiamo un menu.xml con una TexView da usare per la lista del menu (MyMenu.java)

    codice:
    <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="10dp"
        android:textSize="20sp" 
        android:textColor="#000000" > 
    </TextView>
    Creiamo poi la classe MyMenu.java che conterrà due voci, “Back” per tornare all’Activity principale, e “Quit” per chiudere l’applicazione.
    Nello switch di onListItemClick infatti, vediamo che in “case 0” viene eseguito un semplice this.finish(), mentre in “case 1” (ovvero quando premiamo Quit) viene eseguito setResult(123) e poi this.finish(). setResult(123) serve per impostare un risultato che deve ritornare l’Activity MyMenu quando viene chiusa.

    codice:
    public class MyMenu extends ListActivity
    {
    	private static final String[] names = new String[]
    			{
    				"Back", "Quit"
    			};
    	
    	@Override
    	public void onCreate(Bundle savedInstanceState) 
    	{
    		super.onCreate(savedInstanceState);
    		setListAdapter(new ArrayAdapter<String>(this, R.layout.menu, names));
    	}
    
    	@Override
    	protected void onListItemClick(ListView l, View v, int position, long id) {		
    		super.onListItemClick(l, v, position, id);
    
    		switch(position)
    		{
    		case 0: 
    			this.finish();	
    			break;	
    		case 1:
    		       setResult(123);
    		       this.finish();		        
    		}
    	}
    }
    Nell’Activity principale, MainActivity.java, creeremo un bottone per avviare l’Activity MyMenu.java, come vediamo non usiamo il classico startActivity, ma startActivityForResult().
    Poi scriviamo il metodo onActivityResult che al suo interno controllerà se il resultCode è uguale a 123, quello che abbiamo impostato in MyMenu.java ( setResult(123) ), in caso positivo esegue this.finish(), e quindi chiude l’applicazione.

    codice:
    public class MainActivity extends Activity 
    {
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		
    		Button button = (Button) findViewById(R.id.button1);
    		button.setOnClickListener(new View.OnClickListener()
    		{
                public void onClick(View v) 
                {
                    startActivityForResult(new Intent(getApplicationContext(), MyMenu.class), 0);
                }
            });
    
    	}
    
    	@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;
    	}
    	
    	
    
    	@Override
    	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    		// TODO Auto-generated method stub
    		super.onActivityResult(requestCode, resultCode, data);
    		
    		if(resultCode == 123)
    		{
    			this.finish();
    		}
    	}
    }
    Ricordiamoci poi di inserire nel manifest.xml i permessi per MyMenu.java.

    Tips & Tricks:

    Se volete inserire la classica finestra di richiesta conferma per l’uscita dall’applicazione, vi basterà inserire il seguente codice in “case 1” (alla pressione del tasto Quit) in MyMenu.java

    codice:
    @Override
    	protected void onListItemClick(ListView l, View v, int position, long id) {		
    		super.onListItemClick(l, v, position, id);
    
    		switch(position)
    		{
    		case 0: 
    			this.finish();	
    			break;	
    		case 1:
    			AlertDialog.Builder builder = new AlertDialog.Builder(this);
    			builder.setMessage("Sicuro di voler uscire?")
    		       .setCancelable(false)
    		       .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
    		           public void onClick(DialogInterface dialog, int id) 
    		           {	
    		        	   	setResult(123);
    		                finish();
    		           }
    		       })
    		       .setNegativeButton("No", new DialogInterface.OnClickListener() {
    		           public void onClick(DialogInterface dialog, int id) {
    		                dialog.cancel();
    		           }
    		       });
    		AlertDialog alert = builder.create();
    		alert.show();
    			break;
    		}
    	}
    Fonte del Tutorial: www.startingpixel.com
    Download del Sorgente: Link
    Ultima modifica di Hhaunted; 29-07-13 alle 21:35

  2.  

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy