gpt4 book ai didi

java - Android 监听器在 Activity 中工作,但不在 Fragment 中工作

转载 作者:行者123 更新时间:2023-12-01 16:28:44 24 4
gpt4 key购买 nike

我有一个 Activity 和两个 fragment 。我试图从数组列表中获取单击的项目。在我的fragmentA中我有一个界面:

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));
}

然后,我的 Activity 和 FragmentB 中的监听器看起来相同:

   @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;
}

但是,当我单击某个项目时,只有我的 Activity 中的监听器被激活,而不是我的 fragment 中的监听器。我缺少什么?

最佳答案

FragmentB 中的 Activity 不会触发,因为您仅与 fragment A 中的 Activity 进行通信。

在您的 Activity 中执行以下操作:

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;
}

这是从 Activity 中调用 fragment 内部方法的方式

关于java - Android 监听器在 Activity 中工作,但不在 Fragment 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62095266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com