Не работает метод getSupportFragmentManager()

176
10 ноября 2019, 01:20

Я хочу реализовать Recycler View, в котором по нажатии на item будет появляться фрагмент. Но я у меня не работает метод getSupportFragmentManager(), я пытался подставлять getActivity() и FragmentActivity, но у меня ничего не получается.

public class AimsListAdapter extends RecyclerView.Adapter  {
    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.aims_fragment_list,viewGroup,false);
        return new AimsListHolder(view);
    }
    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
        ((AimsListHolder)viewHolder).bindView(i);
    }
    @Override
    public int getItemCount() {
        return OurAimsDataForFragment.tittle.length;
    }
    private class AimsListHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
        private TextView AimsTextName;
        private TextView AimsTextTap;
        private ImageView AimsImage;
        public AimsListHolder(@NonNull View itemView) {
            super(itemView);
            AimsTextName = (TextView)itemView.findViewById(R.id.aims_text_name);
            AimsTextTap = (TextView) itemView.findViewById(R.id.aims_text_tap);
            AimsImage = (ImageView) itemView.findViewById(R.id.aims_image);
            itemView.setOnClickListener(this);
        }
        public  void bindView(int position){
            AimsTextName.setText(OurAimsDataForFragment.tittle[position]);
            AimsTextTap.setText(OurAimsDataForFragment.tap[position]);
            AimsImage.setImageResource(OurAimsDataForFragment.picturePath[position]);
        }
        @Override
        public void onClick(View v) {
            int position = getAdapterPosition();
                switch (position) {
                    case 1:
                        Fragment verifragment = new AimsDialogMetkaFragment();
                        FragmentTransaction ft3 = FragmentActivity.getSupportFragmentManager().beginTransaction();
                        ft3.add(R.id.content_frame, verifragment);
                        ft3.commit();
                        break;
                }
        }

    }
Answer 1

getSupportFragmentManager() это метод активности, а RecyclerView это не активность, а вью, которая ни про какие активности не знает ничего.

У вью должен быть слушатель нажатий, через который и можно оповестить активность, что был нажат элемент номер такой то, а уже сама активность решит показывать или нет диалог или сделать что то другое.

Нужно копать в сторону onItemClicked(int position). Вот что то вроде вот такого или вот такого.

READ ALSO
Обратиться к функции другого класса

Обратиться к функции другого класса

Простите, как я могу обратиться к методу getName из активности NavigationActivity?

211
Оптимизируем кода на JAVA

Оптимизируем кода на JAVA

Задача состоит в следующем:

100
Как задать несколько условий для if else Jquery

Как задать несколько условий для if else Jquery

Есть код, который отвечает за отправку формы на сайте:

130
имитация нажатие на элемент select value

имитация нажатие на элемент select value

есть выпадающий список и снизу кнопки , при нажатие на кнопки выбирается из списка select по строке , мне нужно что бы выбиралось не по строке...

132