Nouvelle mise à Jour - 25 avril 2019
Nouvelle version androidx.l'activité du ver. 1.0.0-alpha07 apporte quelques modifications
Plus d'explications dans android guide officiel: personnaliser le dos de navigation
Exemple:
public class MyFragment extends Fragment {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// This callback will only be called when MyFragment is at least Started.
OnBackPressedCallback callback = new OnBackPressedCallback(true /* enabled by default */) {
@Override
public void handleOnBackPressed() {
// Handle the back button event
}
};
requireActivity().getOnBackPressedDispatcher().addCallback(this, callback);
// The callback can be enabled or disabled here or in handleOnBackPressed()
}
...
}
Vieux Mises À Jour
UPD: 3 avril 2019
Maintenant simplifié. Plus d'infos ici
Exemple:
requireActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), this);
@Override
public boolean handleOnBackPressed() {
//Do your job here
//use next line if you just need navigate up
//NavHostFragment.findNavController(this).navigateUp();
//Log.e(getClass().getSimpleName(), "handleOnBackPressed");
return true;
}
Obsolète (depuis la Version 1.0.0-alpha06
3 avril 2019) :
Depuis cela, il peut être implémenté à l'aide de JetPack mise en oeuvre OnBackPressedCallback
dans votre fragment
et l'ajouter à l'activité:
getActivity().addOnBackPressedCallback(getViewLifecycleOwner(),this);
Votre fragment devrait ressembler à ceci:
public MyFragment extends Fragment implements OnBackPressedCallback {
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getActivity().addOnBackPressedCallback(getViewLifecycleOwner(),this);
}
@Override
public boolean handleOnBackPressed() {
//Do your job here
//use next line if you just need navigate up
//NavHostFragment.findNavController(this).navigateUp();
//Log.e(getClass().getSimpleName(), "handleOnBackPressed");
return true;
}
@Override
public void onDestroyView() {
super.onDestroyView();
getActivity().removeOnBackPressedCallback(this);
}
}
UPD:
Votre activité doit s'étend AppCompatActivity
ou FragmentActivity
et dans Gradle fichier:
implementation 'androidx.appcompat:appcompat:{lastVersion}'