Fragment中有默认构造函数,我想知道它的用途以及它提供什么功能?我在没有它的情况下运行代码,它工作完美,并且在删除它时我找不到任何错误
public class SongListFragment extends Fragment {
private static final String SONG_IDS = "song_ids";
// TODO: Rename and change types of parameters
private int[] songIds;
private OnFragmentInteractionListener mListener;
public SongListFragment() {
// Required empty public constructor
}
// TODO: Rename and change types and number of parameters
public static SongListFragment newInstance(int[] songIds) {
SongListFragment fragment = new SongListFragment();
Bundle args = new Bundle();
args.putIntArray(SONG_IDS, songIds);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
songIds = getArguments().getIntArray(SONG_IDS);
}
}
@Override
public View onCreateView(
LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState )
{
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_song_list, container, false);
}
// TODO: Rename method, update argument and hook method into UI event
public void onButtonPressed(Uri uri) {
if (mListener != null) {
mListener.onSongSelected(10);
}
}
@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");
}
}
@Override
public void onDetach() {
super.onDetach();
mListener = null;
}
public interface OnFragmentInteractionListener {
public void onSongSelected(int songId);
}
}
- 当方向改变时,Android 框架决定重新创建我们的片段。 Android 调用片段的无参构造函数。它不知道我们创建了什么构造函数。
- fragment.argument=bundle→在newInstance中,我们将bundle传递到其中。因此,当我们创建一个 newInstance 时,android 将提取该包并存储它。因此,当 android 方向更改时,android 将使用无参数构造函数重新创建片段,并且
- 可以将包附加到片段,因为它之前已经存储了包。稍后我们可以使用 getArgument 再次访问该数据,例如 ( val video_id = argument?.getLong(EXTRA_VIDEO_ID )
- 所以系统恢复一个Fragment
- 它会自动恢复我们的包
- 将片段的状态恢复到相同的状态。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)