J'ai un fragment:
public class MyFragment extends Fragment{
...
@Override
public View onCreateView(...){...}
...
}
Je l'instancie:
MyFragment myFragment = new MyFragment();
J'utilise le fragment ci-dessus pour remplacer le fragment actuel:
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
Maintenant, myFragment
est affiché à l'écran. NOTE: Je n'ai pas ajouté myFragment
à back stack .
Mes deux questions:
1. Si maintenant, j'appuie sur téléphone portable retour bouton, le rappel du cycle de vie du fragment sera appelé ??
2. Comment personnaliser le bouton précédent cliquer sur l'écouteur dans la classe MyFragment
? (veuillez ne pas me suggérer de faire myFragment.getView().setOnclickListener
, mais le faire dans la classe MyFragment
)
Question 1: Voir http://developer.Android.com/reference/Android/app/Fragment.html#Lifecycle :
"Comme un fragment n’est plus utilisé, il passe par une série inversée de rappels:
onPause () - fragment n'interagit plus avec l'utilisateur, car son activité est suspendue ou une opération de fragment le modifie dans l'activité.
onStop () - le fragment n'est plus visible par l'utilisateur, car son activité est en cours d'arrêt ou une opération de fragment le modifie dans l'activité.
onDestroyView () - permet au fragment de nettoyer les ressources associées à sa vue.
onDestroy () - appelé pour effectuer le nettoyage final de l'état du fragment.
onDetach () - appelé juste avant que le fragment ne soit plus associé à son activité. "
Question 2: Si vous devez savoir que c'est le bouton retourspécifiquementqui déclenche les rappels, vous pouvez capturer l'appui du bouton retour dans l'activité de votre fragment et utiliser votre propre méthode pour gérer il:
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
}
}
androidx.activity 1.0.0-alpha01 est publié et introduit ComponentActivity
, une nouvelle classe de base de FragmentActivity
et AppCompatActivity
existants.
Vous pouvez maintenant enregistrer une OnBackPressedCallback
via addOnBackPressedCallback
pour recevoir des rappels onBackPressed
() sans avoir à remplacer la méthode dans votre activité.