我有一个主要 Activity 和两个 fragment ,我需要在滑动 fragment 时更改按钮,但在第一个 fragment 中不显示工具栏中的按钮,在第二个 fragment 中显示第一个 fragment 的按钮,如果第二个 fragment Fragmento 工具栏中没有按钮,第一个可以正常工作。`
这是第一个 fragment
@Override
public void onCreate(Bundle savedInstanceState) {
setHasOptionsMenu(true);
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View vista =inflater.inflate(R.layout.fragment_clientes, container, false);
Toolbar barra_principal = vista.findViewById(R.id.barra);
((AppCompatActivity)getActivity()).setSupportActionBar(barra_principal);
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
inflater.inflate(R.menu.busqueda_menu,menu);
MenuItem item = menu.findItem(R.id.busqueda);
searchView = (SearchView) item.getActionView();
searchView.setQueryHint("Busqueda Id, Nombre, Dirección");
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String textoBusqueda) {
adaptador.getFilter().filter(textoBusqueda);
return false;
}
});
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
if (id==R.id.busqueda){
//Toast.makeText(getActivity(),"Busqueda",Toast.LENGTH_LONG).show();
}else if (id==R.id.busquedadia){
if(lydias.getVisibility() == View.VISIBLE){
lydias.setVisibility(View.GONE);
}else{
lydias.setVisibility(View.VISIBLE);
}
}
return super.onOptionsItemSelected(item);
}
这是第二个 fragment 。
public void onCreate(Bundle savedInstanceState) {
setHasOptionsMenu(true);
super.onCreate(savedInstanceState);
AdaptadorProductos adaptador;
manager = new dbManager(getContext());
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View vista =inflater.inflate(R.layout.fragment_productos_, container, false);
Toolbar barra_principal = vista.findViewById(R.id.barra);
((AppCompatActivity)getActivity()).setSupportActionBar(barra_principal);
listaProductos = new ArrayList<>();
rcvProductos = vista.findViewById(R.id.rcvProductos);
rcvProductos.setLayoutManager(new LinearLayoutManager(getContext()));
llenaLista();
// Inflate the layout for this fragment
return vista;
}
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
inflater.inflate(R.menu.busqueda_menu,menu);
MenuItem item = menu.findItem(R.id.busqueda);
searchView = (SearchView) item.getActionView();
searchView.setQueryHint("Busqueda Id, Descripción,");
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String textoBusqueda) {
adaptador.getFilter().filter(textoBusqueda);
return false;
}
});
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
if (id==R.id.busqueda){
//Toast.makeText(getActivity(),"Busqueda",Toast.LENGTH_LONG).show();
}else if (id==R.id.busquedadia){
}
return super.onOptionsItemSelected(item);
}
最佳答案
看起来类似的问题:参见this answer.
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){
menu.clear();
inflater.inflate(R.menu.menu_add_comment,menu);
}
关于java - 菜单工具栏显示在错误的 fragment 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59572211/