2011-01-10 10 views

risposta

105

È necessario utilizzare finish() quando l'utente fa clic sul pulsante per passare all'attività precedente.

Button backButton = (Button)this.findViewById(R.id.back); 
backButton.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    finish(); 
    } 
}); 

In alternativa, se si ha realmente bisogno, si può provare a innescare la propria pressione di un tasto indietro:

this.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK)); 
this.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK)); 

Eseguire entrambi.

+0

non posso usare finish() ... in realtà ho un modulo chiamato come date di pianificazione modulo su che voglio usare programma e pulsante indietro ... pulsante di pianificazione programmerà le date e nel caso l'utente lo desideri annulla le date di pianificazione che può annullare utilizzando la funzionalità del pulsante Indietro sul pulsante Annulla .... – Sourabh

+7

Per attivare il pulsante di risposta attraverso dispatchKeyEvent è necessario attivare sia ACTION_DOWN seguito da ACTION_UP. Questo imita un clic del pulsante. Senza averli entrambi, il pulsante Indietro non si innescherà. –

+3

Il BackButton finisce sempre? Io non la penso così Che ne dici di un'operazione di frammento? – alicanbatur

30

Se è necessaria l'esatta funzionalità del pulsante Indietro nel proprio pulsante personalizzato, perché non chiamare semplicemente yourActivity.onBackPressed() in questo modo se si sostituisce la funzionalità del pulsante di comando il pulsante personalizzato si comporterà allo stesso modo.

+0

non posso usare finish() ... in realtà ho un modulo chiamato come modulo di date di pianificazione su quello che voglio usare programma e pulsante indietro ... il pulsante di pianificazione programmerà le date e nel caso in cui l'utente desideri annullare le date di pianificazione puoi cancellarlo usando la funzionalità del pulsante Indietro sul pulsante Annulla .... – Sourabh

+8

non sono sicuro di come quel commento si riferisce alla mia risposta ... non ti sto chiedendo di chiamare finish(), ma di chiamare suBackPressed() dal tuo pulsante menu clic. – ekawas

10
public boolean onKeyDown(int keyCode, KeyEvent event) { 
      if (keyCode == KeyEvent.KEYCODE_BACK) { 
        // your code here 
        return false; 
      } 
     return super.onKeyDown(keyCode, event); 
    } 
Problemi correlati