Панель инструментов 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();}