首页 > 解决方案 > 无法从片段内的接口获取数据

问题描述

我已经实现了一个自定义接口来传递数据,如下所示:

public interface OnLectureSelected {
    public void lectureSelected(String videoId,String lectureDescription);
}

在适配器中,然后我使用接口将数据传递给活动和片段:

OnLectureSelected onLectureSelected2 = (OnLectureSelected) context;
onLectureSelected2.lectureSelected(video,description);

活动能够按预期接收数据:

class Activity extends AppCompatActivity implements OnLectureSelected{
  …
 @Override
 public void lectureSelected(String videoId, String lectureDescription) {
  //I get the passed details
 }

但是,我无法使用片段获取数据:

class Fragment extends Fragment implements OnLectureSelected{
  …
 @Override
 public void lectureSelected(String videoId, String lectureDescription) {
  //Can't get the passed details
 }

从片段内的接口获取数据的最佳方法是什么?

标签: javaandroidinterfacefragment

解决方案


OnLectureSelected onLectureSelected2 = (OnLectureSelected) context;

在这里,这个对象只会将值传递给一个已实现的类。要将值传递给片段,您可以在Activity类中调用以下方法

@Override
    public void lectureSelected(String videoId, String lectureDescription) {
        //Can't get the passed details
        List<Fragment> fragments = getSupportFragmentManager().getFragments();
        if (fragments != null) {
            for (Fragment fragment : fragments) {
                if(fragment instanceof FragmentClasas) {
                    fragment.lectureSelected(video,description);
                }
            }
        }
    }

推荐阅读