2017-02-13 3 views
0

У меня есть созданный фрагмент и не могу найти, что такое использование класса Interface в этом фрагменте ... i google it, но не может найти нужную документацию?В чем заключается использование класса интерфейса в фрагменте?

Благодарим вас за беспокойство!

public class SongListFragment extends Fragment { 

     public SongListFragment() { 
      // Required empty public constructor 
     } 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      if (getArguments() != null) { 
       songIds = getArguments().getIntArray(SONG_IDS); 
      } 
     } 
     @Override 
     public void onAttach(Context context) { 
      super.onAttach(context); 
      if (context instanceof OnFragmentInteractionListener) { 
       mListener = (OnFragmentInteractionListener) context; 
      } else { 
       throw new RuntimeException(context.toString() 
         + " must implement OnFragmentInteractionListener"); 
      } 
     } 



//what's the use? 
public interface OnFragmentInteractionListener { 
      public void onSongSelected(int songId); 
     } 
} 
+0

вы должны изменить вашу тему, вместо того, чтобы просить '// что использование?' В вашем комментарии проверить мой ответ и пройдите по ссылкам, указанным –

ответ

2

OnFragmentInteractionListener может использовать для communicate между фрагментами

Чтобы разрешить Fragment связь до своей деятельности, вы можете определить интерфейс в Fragment класса и его реализации в рамках деятельности , Фрагмент фиксирует реализацию интерфейса в течение его метода жизненного цикла onAttach() и затем может вызвать методы интерфейса , чтобы обменивался информацией с Управлением.

найти другой пример, так here

+0

thnx за вашу помощь! –

+0

@ashu_legacy добро пожаловать;) –

1

Интерфейс является ссылочным типом в Java. Он похож на класс. Это коллекция абстрактных методов. Класс реализует интерфейс, тем самым наследуя абстрактные методы интерфейса.

Наряду с абстрактными методами интерфейс может также содержать константы, методы по умолчанию, статические методы и вложенные типы. Органы метода существуют только для методов по умолчанию и статических методов.

Написание интерфейса аналогично написанию класса. Но класс описывает атрибуты и поведение объекта. И интерфейс содержит поведение, которое реализует класс.

Если класс, реализующий интерфейс, является абстрактным, все методы интерфейса должны быть определены в классе.

Возможно, у вас есть короткая идея относительно here Не стесняйтесь спрашивать, встает ли какое-либо замешательство! :)

Таким образом, в вашем конкретном случае ваша деятельность должна реализовывать то, что interfaceOnFragmentInteractionListener в противном случае фрагменты, которые прилагаются в Activity, не могут связываться друг с другом. Ваша деятельность должна выглядеть

public class YourActivity extends Activity implements OnFragmentInteractionListener 

Затем в Activity вы реализуете метод onSongSelected(int songId) Вы можете получить помощь от here. Надеюсь, что это помогает!

0

@Tahmid Rahman объясняет, в каком интерфейсе есть ответ.

В этом конкретном случае интерфейс должен быть реализован в Управлении, к которому прикреплен ваш фрагмент. Это позволит фрагменту вызвать onSongSelected() о действии. Затем деятельность может, в свою очередь, правильно обрабатывать запрошенные пользователями действия.

Без интерфейса, не было бы четко определенного способа, чтобы фрагмент сообщал своей родительской активности, что пользователь нажал на песню.

0

интерфейс используется для обмена данными между fragment и activity или между несколькими fragments, когда происходит событие.

См Documentation

в вашем случае:

public static class MainActivity extends Activity 
     implements SongListFragment.OnFragmentInteractionListener{ 
    ... 

    public void onSongSelected(int songId) { //this method must be implemented 
     // The user selected the song from the list in SongListFragment 
     // Do something here to display that song..in your activity 
    } 
} 

вы можете реализовать интерфейс в своей деятельности и написать onSongSelected метод с идентификатором песни, переданного в качестве параметра.

Так в основном он используется для передачи выбранной песни списка информации других activity или fragment, когда происходит отбор