我有一个创建的片段,无法在此片段中找到Interface类的用途...我谷歌但是找不到合适的文档?
感谢您的关注!
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
类中的接口,并在其中实现它 活动。 Fragment捕获了接口实现 它的onAttach()
生命周期方法然后可以调用接口 方法与活动进行沟通。
找到另一个SO示例here
答案 1 :(得分:1)
接口是Java中的引用类型。它类似于类。它是抽象方法的集合。一个类实现一个接口,从而继承接口的抽象方法。
除了抽象方法,接口还可以包含常量,默认方法,静态方法和嵌套类型。方法体仅适用于默认方法和静态方法。
编写接口类似于编写类。但是一个类描述了对象的属性和行为。接口包含类实现的行为。
除非实现接口的类是抽象的,否则需要在类中定义接口的所有方法。
您可能对here有一个简短的想法。随意询问是否有任何混乱上升! :)
因此,在您的特定情况下,您的Activity必须实现interface
OnFragmentInteractionListener
,否则Activity
中附加的片段无法相互通信。您的活动应该是
public class YourActivity extends Activity implements OnFragmentInteractionListener
然后在您的Activity
中实施方法onSongSelected(int songId)
你可以从here.获得帮助希望这有帮助!
答案 2 :(得分:0)
@Tahmid Rahman解释了界面的答案。
在这种特定情况下,接口应该在您的片段附加到的Activity中实现。这将允许片段在活动上调用onSongSelected()
。然后,活动可以反过来正确处理用户请求的操作。
如果没有界面,片段就没有明确的方式告诉其父活动用户点击了一首歌。
答案 3 :(得分:0)
接口用于在事件发生时在fragment
和activity
之间或多个fragments
之间进行通信。
在你的情况下:
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
}
}
您可以在活动中实现界面,并使用作为参数传递的歌曲ID编写onSongSelected
方法。
所以基本上它用于在选择发生时将选定的歌曲列表信息传递给其他activity
或fragment