Как сделать так, чтобы одна кнопка активировала 4 onclicklistener - PullRequest
0 голосов
/ 14 апреля 2020

Я работаю над приложением, и мне нужно, чтобы моя кнопка меню вызывала onClick для каждого из моих фрагментов, но она вызывается только для первого, а не для остальных. Что может быть не так? Это код, который у меня есть на каждом из моих фрагментов в пейджере.

//Initiate Genre Menu
   LinearLayout menu = getActivity().findViewById(R.id.genre_menu);

    //Initiate GenreMenuSwitches class
    GenreMenuSwitches genresOptions = new GenreMenuSwitches(getActivity());


// Make Genre Button open menu on click
    ImageView genre_button = (ImageView) getActivity().findViewById(R.id.genre_options);
    genre_button.setOnClickListener(new View.OnClickListener() {
        @RequiresApi(api = Build.VERSION_CODES.O)
        @Override
        public void onClick(View v) {

            modifiedGames.clear();

            menu.setVisibility(View.VISIBLE);
            ((ViewGroup) getActivity().findViewById(R.id.genre_menu)).getLayoutTransition()
                    .enableTransitionType(LayoutTransition.CHANGING);

            menu.getLayoutParams().height= ViewGroup.LayoutParams.MATCH_PARENT;
            menu.getLayoutParams().width= ViewGroup.LayoutParams.MATCH_PARENT;

            updateUI(modifiedGames);
        }
    });





    // Set Menu's Confirm Button to hide menu and update UI
    Button confirm_button2 = getActivity().findViewById(R.id.menu_reset);
    confirm_button2.setOnClickListener(new View.OnClickListener() {
        @RequiresApi(api = Build.VERSION_CODES.O)
        @Override
        public void onClick(View v) {

           /*((ViewGroup) getActivity().findViewById(R.id.genre_menu)).getLayoutTransition()
                    .enableTransitionType(LayoutTransition.CHANGING);

            menu.getLayoutParams().height= 100;
            menu.getLayoutParams().width= 200;
            menu.setVisibility(View.GONE);*/

            Log.v("Options Size1", "" + genresOptions.genreChosen.size());
            if (genresOptions.genreChosen.size() != 0) {
                for (int i = 0; i < games.size(); i++) {
                    ArrayList<Integer> currentGamesGenre = games.get(i).getGenres();
                   outer: for (int x = 0; x < currentGamesGenre.size(); x++) {
                        for (int y = 0; y < genresOptions.genreChosen.size(); y++) {
                            if (currentGamesGenre.get(x) == genresOptions.genreChosen.get(y) ) {
                                modifiedGames.add(games.get(i));
                                break outer;
                            }
                        }

                    }
                }

                Log.v("Options Size2", "" + genresOptions.genreChosen.size());
                Log.v("Modified Size", "" + modifiedGames.size());
                updateUI(modifiedGames);


            }

        }
    });
...