java - 菜单工具栏显示在错误的 fragment 中

标签 java android toolbar

我有一个主要 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/

相关文章:

android - Android 中的抽屉导航滞后

java - 在 webapp 中使用 JExcel Api 时,Tomcat 7 在启动时崩溃

Java 如何从接收到的 UDP 字节中解析 double 值?

Java Swing JTextArea 左右书写

android - 如何在渗透中将点定位到边界框或多边形中?

sql-server - SSRS 报告工具栏格式显得拉长

java - Spring Web 响应式客户端

android - 如何从 Android 应用程序向 Google 智能助理发送文本查询

height - 如何更改 CKEditor 工具栏的大小?

java - 如何在 Quaqua 中获得统一的工具栏?