Панель инструментов Android в отдельном фрагменте

У меня проблема, я не знаю, как ее решить. Как вы скрываете панель инструментов в определенном фрагменте, который я уже просматривал в Интернете, и то, что я обнаружил, это передача активности, и фрагмент ее решит. Но для меня это совсем не работает, вот мой код:

main_activity:

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);
    }
}

заблаговременно.

У меня есть ящик внутри панели инструментов.

Ответы

Ответ 1

Поместите этот код в фрагмент, в котором вы хотите скрыть панель инструментов...

 @Override
public void onResume() {
    super.onResume();
    ((AppCompatActivity)getActivity()).getSupportActionBar().hide();
}
@Override
public void onStop() {
    super.onStop();
    ((AppCompatActivity)getActivity()).getSupportActionBar().show();
}

Ответ 2

В фрагменте onCreate вызов метода:
((AppCompatActivity) getActivity()).getSupportActionBar().hide();
Замените AppCompateActivity классом активности, который вы использовали.

Ответ 3

Создайте интерфейс в фрагменте и используйте его, чтобы сообщить родительскому действию, чтобы скрыть панель инструментов.

Добавьте эти строки в свой фрагмент:

private OnEventListener listener;

public interface OnEventListener {

    void hideToolbar() ;
}

public void setOnEventListener(OnEventListener listener) {

    this.listener = listener;
}

После создания фрагмента в основной активности добавьте:

    myFragment.setOnEventListener(new MyFragment.OnEventListener() {
        @Override
        public void hideToolbar() {

            getSupportActionBar().hide();
        }
    });

Всякий раз, когда вам нужно скрыть панель инструментов, выполните:

listener.hideToolbar();

изнутри вашего фрагмента.

Ответ 4

Просто добавьте эти методы в фрагмент, в который вы хотите перевернуть панель инструментов, а также в фрагменте onStop() сделать его видимым снова.

 @Override
    public void onResume() {
        super.onResume();
        ((AppCompatActivity)getActivity()).getSupportActionBar().hide();
    }

    @Override
    public void onStop() {
        super.onStop();
        ((AppCompatActivity)getActivity()).getSupportActionBar().show();
    }

Ответ 5

в kotlin скрыть и показать supportActionBar следующим образом:

override fun onResume() {
    super.onResume()
    (activity as AppCompatActivity).supportActionBar?.hide()
}

override fun onStop() {
    super.onStop()
    (activity as AppCompatActivity).supportActionBar?.show()
}

и если вы хотите иметь свою собственную панель инструментов, в наборе OncreateView:

//your Custom toolbar in xml
val toolbar = binding.toolbar
(activity as AppCompatActivity).setSupportActionBar(toolbar)

Ответ 6

Если вы используете новый Navigationa Component, то там, где вы установили свою панель инструментов, напишите это

navController.addOnDestinationChangedListener(new NavController.OnDestinationChangedListener() {
   @Override
   public void onDestinationChanged(@NonNull NavController controller,
           @NonNull NavDestination destination, @Nullable Bundle arguments) {
       if(destination.getId() == R.id.full_screen_destination) {
           toolbar.setVisibility(View.GONE);
           bottomNavigationView.setVisibility(View.GONE);
       } else {
           toolbar.setVisibility(View.VISIBLE);
           bottomNavigationView.setVisibility(View.VISIBLE);
       }
   }
});

Ответ 7

Поместите этот код в фрагмент, в котором вы хотите скрыть панель инструментов...

Добавьте это (((AppCompatActivity) getActivity()). GetSupportActionBar(). Hide();) в onCreateView или в onResume.

и сделать это в onDestroy()

@Override
public void onDestroy() {
super.onDestroy();
((AppCompatActivity)getActivity()).getSupportActionBar().show();}