SearchView duplicates the icon

0

I have a problem, I do not even know where to look, the fact is that every time I open this TabLayout or this fragment, I do not know where the error is, I add a magnifying glass to the toobar, how can I Fix?

public class Tab_Ïnicio extends Fragment {
    private AppBarLayout appBar;
    private TabLayout pestanas;
    private ViewPager viewPager;

    public Tab_Ïnicio() {
    }

    @override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragmento_paginado, container, false);

        if (savedInstanceState == null) {
            insertarTabs(container);

            // Setear adaptador al viewpager.
viewPager = (ViewPager) view.findViewById(R.id.pager);
            poblarViewPager(viewPager);
            pestanas.setupWithViewPager(viewPager);


            pestanas.setTabGravity(TabLayout.GRAVITY_CENTER);
            pestanas.setTabMode(TabLayout.MODE_FIXED);
            //pestanas.setTabMode(TabLayout.MODE_SCROLLABLE);
}

        return view;
    }

    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.menu_main, menu);
        super.onDestroyView();
    }


    private void insertarTabs(ViewGroup container) {
        View padre = (View) container.getParent();
        appBar = (AppBarLayout) padre.findViewById(R.id.appbar);
        pestanas = new TabLayout(getActivity());
        pestanas.setTabTextColors(Color.parseColor("#FFFFFF"), Color.parseColor("#FFFFFF"));
        appBar.addView(pestanas);
    }

    private void poblarViewPager(ViewPager viewPager) {
        AdaptadorSecciones adapter = new AdaptadorSecciones(getFragmentManager());

        adapter.addFragment(new FragGridCampos(), ("Todos"));
        adapter.addFragment(new FragGridComentarios(), ("Comentarios"));
        viewPager.setAdapter(adapter);
    }

    [COLOR=#808000 @override
[/color]public void onDestroyView() {
        super.onDestroyView();
        appBar.removeView(pestanas);
    }

    /**
     * Un {@link FragmentStatePagerAdapter} que gestiona las secciones, fragmentos y
     * títulos de las pestañas
     */
public class AdaptadorSecciones extends FragmentStatePagerAdapter {
        private final List<Fragment> fragmentos = new ArrayList<>();
        private final List<String> titulosFragmentos = new ArrayList<>();

        public AdaptadorSecciones(FragmentManager fm) {
            super(fm);
        }

        [COLOR=#808000 @override
[/color]public Fragment getItem(int position) {
            return fragmentos.get(position);
        }

        [COLOR=#808000 @override
[/color]public int getCount() {
            return fragmentos.size();
        }

        public void addFragment(Fragment fragment, String title) {
            fragmentos.add(fragment);
            titulosFragmentos.add(title);
        }

        [COLOR=#808000 @override
[/color]public CharSequence getPageTitle(int position) {
            return titulosFragmentos.get(position);
        }
    }
}

O en este?

public class FragGridCampos extends Fragment implements SearchView.OnQueryTextListener{

    //Creating a List of jornadas
private List<Estadisticas> listJornadas;

    //Creating Views
private RecyclerView recyclerView;
    private RecyclerView.LayoutManager layoutManager;
    private Campos_Adapter adapter;


    private List<Estadisticas> mCountryModel;


    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        final View view = inflater.inflate( R.layout.campos_list, null);

        setHasOptionsMenu(true);

        recyclerView = (RecyclerView) view.findViewById( R.id.recyclerView);
        recyclerView.setHasFixedSize(true);
        RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getActivity(), 1);
        recyclerView.setLayoutManager(layoutManager);

        TextView miTexto = (TextView)view.findViewById( R.id.mi_texto);
        miTexto.setText("CAMPOS");
        //miTexto.setTextColor(color.RED);
listJornadas = new ArrayList<Estadisticas>();

        adapter = new Campos_Adapter(listJornadas, getActivity());
        recyclerView.setAdapter(adapter);
        recyclerView.addItemDecoration(new DecoracionLineaDivisoria(getActivity()));

        getData();

        /*ImageButton fabButton = (ImageButton) view.findViewById(R.id.fab);
        fabButton.setOnClickListener(new View.OnClickListener() {
            @override
            public void onClick(View v) {
                //startActivity(new Intent(getActivity(), MainActivity2.class));
                Toast.makeText(getActivity(),"Proximamente",Toast.LENGTH_SHORT).show();
            }
        });*/
return view;
    }

    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.menu_buscar, menu);
        super.onDestroyView();
        final MenuItem searchItem = menu.findItem(R.id.action_search);
        final SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
        searchView.setOnQueryTextListener(this);


    }

    //This method will get data from the web api
private void getData(){
        //Showing a progress dialog
final ProgressDialog loading = ProgressDialog.show(getActivity(),"Cargando datos", "Por favor espere...",false,false);

        //Creating a json array request
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Config_Url.CAMPOS,
                new Response.Listener<JSONArray>() {
                    [COLOR=#808000 @override
[/color]public void onResponse(JSONArray response) {
                        //Dismissing progress dialog
loading.dismiss();

                        //calling method to parse json array
parseData(response);
                    }
                },
                new Response.ErrorListener() {
                    [COLOR=#808000 @override
[/color]public void onErrorResponse(VolleyError error) {

                    }
                });

        //Creating request queue
RequestQueue requestQueue = Volley.newRequestQueue(getActivity());

        //Adding request to the queue
requestQueue.add(jsonArrayRequest);
    }

    //This method will parse json data
private void parseData(JSONArray array){

        for(int i = 0; i<array.length(); i++) {
            Estadisticas campo = new Estadisticas();
            JSONObject json = null;
            try {
                json = array.getJSONObject(i);

                campo.setNombre_campo(json.getString("nombre_campo"));
                campo.setPoblacion(json.getString("poblacion"));
                campo.setEquipo(json.getString("equipo"));
                campo.setTelefono(json.getString("telefono"));
                campo.setGeo(json.getString("geo"));
                campo.setUrl(json.getString("url"));
                campo.setEmail(json.getString("email"));

                campo.setEscudo("http://juveniles.esy.es/Escudos/" + json.getString("escudo"));

            } catch (JSONException e) {
                e.printStackTrace();
            }
            listJornadas.add(campo);
            adapter.notifyDataSetChanged();
        }
    }

    [COLOR=#808000 @override
[/color]public boolean onQueryTextChange(String newText) {
        final List<Estadisticas> filteredModelList = filter(listJornadas, newText);

        adapter.setFilter(filteredModelList);
        return true;
    }

    [COLOR=#808000 @override
[/color]public boolean onQueryTextSubmit(String query) {
        return false;
    }

    private List<Estadisticas> filter(List<Estadisticas> models, String query) {
        query = query.toLowerCase();
        final List<Estadisticas> filteredModelList = new ArrayList<>();
        for (Estadisticas model : models) {
            final String poblacion = model.getPoblacion().toLowerCase();
            final String equipo = model.getEquipo().toLowerCase();

            if (poblacion.contains(query)) {
                filteredModelList.add(model);
            }
            else if (equipo.contains(query)) {
                filteredModelList.add(model);
            }
        }
        return filteredModelList;

    }
}

Or this one?

public class Tab_Ïnicio extends Fragment {
private AppBarLayout appBar;
private TabLayout pestanas;
private ViewPager viewPager;

public Tab_Ïnicio() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragmento_paginado, container, false);

    if (savedInstanceState == null) {
        insertarTabs(container);

        // Setear adaptador al viewpager.
        viewPager = (ViewPager) view.findViewById(R.id.pager);
        poblarViewPager(viewPager);
        pestanas.setupWithViewPager(viewPager);


        pestanas.setTabGravity(TabLayout.GRAVITY_CENTER);
        pestanas.setTabMode(TabLayout.MODE_FIXED);
        //pestanas.setTabMode(TabLayout.MODE_SCROLLABLE);
    }

    return view;
}

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.menu_main, menu);
    super.onDestroyView();
}


private void insertarTabs(ViewGroup container) {
    View padre = (View) container.getParent();
    appBar = (AppBarLayout) padre.findViewById(R.id.appbar);
    pestanas = new TabLayout(getActivity());
    pestanas.setTabTextColors(Color.parseColor("#FFFFFF"), Color.parseColor("#FFFFFF"));
    appBar.addView(pestanas);
}

private void poblarViewPager(ViewPager viewPager) {
    AdaptadorSecciones adapter = new AdaptadorSecciones(getFragmentManager());

    adapter.addFragment(new FragGridCampos(), ("Todos"));
    adapter.addFragment(new FragGridComentarios(), ("Comentarios"));
    viewPager.setAdapter(adapter);
}

@Override
public void onDestroyView() {
    super.onDestroyView();
    appBar.removeView(pestanas);
}

/**
 * Un {@link FragmentStatePagerAdapter} que gestiona las secciones, fragmentos y
 * títulos de las pestañas
 */
public class AdaptadorSecciones extends FragmentStatePagerAdapter {
    private final List<Fragment> fragmentos = new ArrayList<>();
    private final List<String> titulosFragmentos = new ArrayList<>();

    public AdaptadorSecciones(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        return fragmentos.get(position);
    }

    @Override
    public int getCount() {
        return fragmentos.size();
    }

    public void addFragment(Fragment fragment, String title) {
        fragmentos.add(fragment);
        titulosFragmentos.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return titulosFragmentos.get(position);
    }
}

}

    
asked by Rafel C.F 23.06.2017 в 13:01
source

1 answer

1

Try modifying your method onCreateOptionsMenu in class FragGridCampos in the following way.

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    menu.clear();
    inflater.inflate(R.menu.menu_buscar, menu);
    final MenuItem searchItem = menu.findItem(R.id.action_search);
    final SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
    searchView.setOnQueryTextListener(this);
} 

I have added menu.clear() to delete the previously loaded menu and super.onCreateOptionsMenu(menu, inflater);

    
answered by 23.06.2017 / 13:56
source