J'ai un problème que je ne sais pas résoudre. Comment cacher une barre d'outils dans un fragment spécifique, j'ai déjà cherché sur Internet et ce que j'ai trouvé était une activité de communication et un fragment le résoudrait. Mais ça ne marche pas du tout pour moi, voici mon code:
activité principale:
public class MainActivity extends ActionBarActivity implements like_frag.OnHideToolbar{
....
public void onHidingToolbar(int position){
Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
if(toolbar == null){
getSupportActionBar().hide();
}else{
getSupportActionBar().hide();
}
}
like_frag.Java
public class like_frag extends Fragment {
OnHideToolbar mCallback;
Toolbar toolbar;
public interface OnHideToolbar {
public void onHidingToolbar(int position);
}
public void onAttach(Activity activity){
try{
mCallback = (OnHideToolbar) activity;
}catch(ClassCastException e){
throw new ClassCastException(activity.toString() + "error implementing");
}
}
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View rootView = inflater.inflate(R.layout.swipefrag, container, false);
toolbar = (Toolbar)getActivity().findViewById(R.id.toolbar);
return rootView;
}
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
}
merci d'avance.
J'ai un tiroir dans la barre d'outils.
Mettez ce code en fragment dans lequel vous souhaitez masquer la barre d'outils ...
@Override
public void onResume() {
super.onResume();
((AppCompatActivity)getActivity()).getSupportActionBar().hide();
}
@Override
public void onStop() {
super.onStop();
((AppCompatActivity)getActivity()).getSupportActionBar().show();
}
Dans l'appel de méthode onCreate
du fragment:((AppCompatActivity) getActivity()).getSupportActionBar().hide();
Remplacez AppCompateActivity
par la classe d'activité que vous avez utilisée.
Créez une interface dans le fragment et utilisez-la pour indiquer à l'activité parent de masquer la barre d'outils.
Ajoutez ces lignes à votre fragment:
private OnEventListener listener;
public interface OnEventListener {
void hideToolbar() ;
}
public void setOnEventListener(OnEventListener listener) {
this.listener = listener;
}
Après avoir créé votre fragment dans l'activité principale, ajoutez:
myFragment.setOnEventListener(new MyFragment.OnEventListener() {
@Override
public void hideToolbar() {
getSupportActionBar().hide();
}
});
Chaque fois que vous devez masquer la barre d'outils, exécutez:
listener.hideToolbar();
de l'intérieur de votre fragment.
Ajoutez simplement ces méthodes au fragment dans lequel vous souhaitez désactiver la barre d'outils, et aussi dans la onStop()
du fragment, rendez-la visible à nouveau.
@Override
public void onResume() {
super.onResume();
((AppCompatActivity)getActivity()).getSupportActionBar().hide();
}
@Override
public void onStop() {
super.onStop();
((AppCompatActivity)getActivity()).getSupportActionBar().show();
}
dans kotlin masquer et afficher supportActionBar
comme suit:
override fun onResume() {
super.onResume()
(activity as AppCompatActivity).supportActionBar?.hide()
}
override fun onStop() {
super.onStop()
(activity as AppCompatActivity).supportActionBar?.show()
}
et si vous voulez avoir votre propre barre d'outils personnalisée, dans OncreateView
set:
//your Custom toolbar in xml
val toolbar = binding.toolbar
(activity as AppCompatActivity).setSupportActionBar(toolbar)
Mettez ce code dans le fragment dans lequel vous souhaitez masquer la barre d'outils ...
Ajoutez ceci (((AppCompatActivity) getActivity ()). GetSupportActionBar (). Hide ();) dans onCreateView ou dans onResume.
et faites-le dans onDestroy ()
@Override
public void onDestroy() {
super.onDestroy();
((AppCompatActivity)getActivity()).getSupportActionBar().show();}