Невозможно получить данные из интерфейса внутри фрагмента - PullRequest
0 голосов
/ 23 октября 2019

Я реализовал пользовательский интерфейс для передачи данных, как показано ниже:

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
 }

Каков наилучший подход для получения данных из интерфейса внутри фрагмента?

1 Ответ

0 голосов
/ 23 октября 2019
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);
                }
            }
        }
    }
...