2013-04-19 21 views
5

Ho un'applicazione con un menu e in base a quale pulsante si preme nel menu viene aperta una nuova attività. Voglio avere un pulsante indietro su ogni schermata che ti porterà alla schermata precedente, quindi mi chiedo come faccio a fare questo?Creazione del pulsante Indietro personalizzato in Android

Ecco il codice che ho usato che funziona:

backButton = (ImageButton) findViewById(R.id.back_button); 
     backButton.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 


       finish(); 

      } 
     }); 

Tuttavia la sua non è una buona pratica di programmazione per me di mettere questo codice in tutte le mie attività. Come faccio a creare un qualche tipo di stack che salvi tutte le pagine visualizzate e che utilizzi per tornare alla pagina precedente?

Devo inserire un pulsante indietro nella mia applicazione in modo da non poter utilizzare quello esistente in ActionBar.

+1

hai già fatto buona pratica di programmazione. proprio come il comportamento predefinito. –

risposta

7

solo un'idea

Creare un BaseClass che si estende attività. In là dichiarare

@Override 
    public void onClick(View v) { 
     super.onBackPressed(); // or super.finish(); 
    } 

In tutte le attività estendere questa Classe Base. E in ogni layout nel tasto messo

android:onClick="onClick" 

E per rendere il design xml del pulsante riutilizzabile crearlo in un XML separato. e aggiungilo usando <include/>

1

C'è un pulsante di back-up hardware su tutti i dispositivi Android, e fa esattamente quello che fanno le tue linee di codice, a meno che non venga forzato a fare qualcos'altro.

È anche possibile fare riferimento a this answer.

8

Hai provato a utilizzare la barra delle azioni nella tua attività? utilizzare in ogni attività

ActionBar actionBar = getSupportActionBar(); 
if(actionBar != null){ 
    actionBar.setTitle(getResources().getString(R.string.app_name)); 
    actionBar.setDisplayHomeAsUpEnabled(true); 
    actionBar.setIcon(R.drawable.app_icon); 
} 

e maniglia in

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      finish(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 
5

vorrei suggerire contro avere un costume pulsante indietro. Android ha un pulsante di back hardware. Premendo il pulsante indietro di haradware si passa al precedente.

Non penso che sia necessario un pulsante indietro personalizzato. Non penso che sia una buona pratica di programmazione per ignorare il comportamento predefinito.

Si crea un backbutton nella propria attività e si implementa la funzionalità come si è fatto in precedenza. Tuttavia, l'utente può utilizzare il pulsante back hardware per la stessa funzionalità. Quindi forniresti la stessa funzionalità che è ridondante.

Problemi correlati