web-dev-qa-db-fra.com

android masquer la barre d'outils dans un fragment spécifique

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.

28
smovie9

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();
}
70
Soni Kumar

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.

28
dc-aoxn

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.

8
Chris Read

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();
    }
3
Kaustubh Bhagwat

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)
3
Sanam Yavarpor

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();}
2
karan1.singh