【问题标题】:Unable to get data from an interface inside a fragment无法从片段内的接口获取数据
【发布时间】:2019-10-23 10:41:43
【问题描述】:

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

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

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

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

Activity 能够按预期接收数据:

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
 }

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

【问题讨论】:

  • 从接口获取数据是指什么?您没有在 OnLectureSelected 中声明方法吗?
  • 声明类的目的是什么,例如此类 Fragment extends Fragment ...?

标签: java android interface fragment


【解决方案1】:
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);
                }
            }
        }
    }

【讨论】:

    猜你喜欢
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多