Android Слушатель работает в действии, но не во фрагменте - PullRequest
0 голосов
/ 30 мая 2020

У меня есть активность и два фрагмента. Я пытаюсь получить элемент, на который щелкнули мышью, у исполнителя. В моем фрагменте A у меня есть интерфейс:

public interface GroupListener {
        public String onGroupSelected(String groupName);
}

и

    @Override
    public void onAttach(@NonNull Context context) {
        super.onAttach(context);

        try {
            groupListener = (GroupListener) context;
        } catch (ClassCastException e)
        { 
            throw new ClassCastException(context.toString() + " must implement the interface" +
                    "called GroupListener!");
        }
    }

Это получает позицию из элемента, нажатого в списке:

    public void onListItemClick(@NonNull ListView l, @NonNull View v, int position, long id) {
        groupListener.onGroupSelected((String) getListAdapter().getItem(position));
    }

Я затем у меня есть список в моем действии и во фрагментеB, который выглядит одинаково:

   @Override
    public String onGroupSelected(String groupName) {
        System.out.println("in onGroup  in Activity");
        return groupName;
    } 
   @Override
    public String onGroupSelected(String groupName) {
        System.out.println("in onGroup  in fragmentB");
        return groupName;
    } 

Но когда я нажимаю элемент, активируется только слушатель в моем действии, а не тот, который находится в моем фрагменте. Что мне не хватает?

1 Ответ

0 голосов
/ 30 мая 2020

Один из FragmentB не сработает, поскольку вы общаетесь только с действием из фрагмента A.

В своей деятельности сделайте что-то вроде этого:

Override
    public String onGroupSelected(String groupName) {
        System.out.println("in onGroup  in Activity");
        FragmentB frag = //find your fragment using fragment manager
        frag.onGroupSelected(groupName);
        return groupName;
    } 

Это как вы вызываете методы внутри фрагмента из активности

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...