java - 无法从片段内的接口获取数据
问题描述
我已经实现了一个自定义接口来传递数据,如下所示:
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
}
从片段内的接口获取数据的最佳方法是什么?
解决方案
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);
}
}
}
}
推荐阅读
- r - 标准化行中的名称并根据 R 中的相似行计算几何平均值
- xamarin.forms - Xamarin.Forms:离开主详细信息页面会导致之后的每个页面在标题中都有两个后退按钮
- javascript - Urql 错误:无法读取未定义的变量名的属性,并且我正确定义了它
- java - 使用 Java Streams 从另一个列表中搜索列表中的任何项目
- javascript - 排序数字数组并返回索引js
- javascript - 回调完成后从数据表中删除
- typescript - React-navigation v5 TypeScript:如何要求参数?
- c++ - OpenCL:clSetKernelArg 中的 CL_INVALID_ARG_SIZE
- python - Python中常量'e'的奇怪行为
- c# - 如何根据 LINQ 中的另一个字段动态选择字段?