Frammento: quale richiamo richiamato quando si preme il pulsante Indietro e lo si personalizza

Ho un frammento:

public class MyFragment extends Fragment{ ... @Override public View onCreateView(...){...} ... } 

Lo istanziamo:

 MyFragment myFragment = new MyFragment(); 

Uso il frammento sopra per sostituire il frammento corrente:

 FragmentManager fragmentManager = activity.getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); // replace fragment fragmentTransaction.replace(R.id.fragment_placeholder, myFragment, "myTag"); // NOTE: I did not add to back stack 

Ora, myFragment viene visualizzato sullo schermo. NOTA: Non ho aggiunto myFragment allo stack posteriore .

Le mie due domande:

1. Se ora, premo il pulsante del telefono cellulare, quale callback del ciclo di vita del frammento verrà richiamato ??

2. Come posso personalizzare il listener del clic sul pulsante Indietro nella class MyFragment ? (per favore non suggerirmi di fare myFragment.getView().setOnclickListener , ma farlo nella class MyFragment )

Domanda 1: vedere http://developer.android.com/reference/android/app/Fragment.html#Lifecycle :

“Poiché un frammento non viene più utilizzato, passa attraverso una serie inversa di callback:

onPause () – il frammento non interagisce più con l’utente perché la sua attività è in pausa o un’operazione di frammento la sta modificando nell’attività.

onStop () – il frammento non è più visibile all’utente perché l’attività è in fase di arresto o un’operazione di frammento la sta modificando nell’attività.

onDestroyView () – consente al frammento di ripulire le risorse associate alla sua vista.

onDestroy () – chiamato per eseguire la pulizia finale dello stato del frammento.

onDetach () – chiamato immediatamente prima che il frammento non sia più associato alla sua attività. ”

Domanda 2: Se è necessario sapere che è stato specificamente il pulsante Indietro che triggers i richiami, è ansible acquisire il pulsante Indietro nella Attività del frammento e utilizzare il proprio metodo per gestirlo:

 public class MyActivity extends Activity { //... //Defined in Activity class, so override @Override public void onBackPressed() { super.onBackPressed(); myFragment.onBackPressed(); } } public class MyFragment extends Fragment { //Your created method public void onBackPressed() { //Handle any cleanup you don't always want done in the normal lifecycle } }