я пытаюсь использовать ViewPager внутри фрагмента, я уже видел, что мне нужно использовать getChildFragmentManager (), но я не могу найти способ заставить его работать.
По сути, у меня есть макет ящика с боковым меню, в котором я могу выбрать фрагмент, который хочу использовать. В одном из этих фрагментов мне нужен ViewPager с 2 субфрагментами.
Когда я пытаюсь запустить фрагмент с субфрагментами, обычно я получаю сообщение об ошибке «необходимо реализовать OnFragmentInteractionListener».
Код, который у меня есть на самом деле, если я запускаю его как действие, он идет хорошо, но фрагмент является причиной сбоя
public class Calculator extends Fragment implements Basic.OnFragmentInteractionListener, Cientific.OnFragmentInteractionListener{
private SectionsPagerAdapter mSectionsPagerAdapter;
private OnFragmentInteractionListener mListener;
private ViewPager mViewPager;
public Calculator() {
// Required empty public constructor
}
public static Calculator newInstance(String param1, String param2) {
Calculator fragment = new Calculator();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set up the ViewPager with the sections adapter.
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){
mViewPager = (ViewPager) getView().findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
//here i already tried using getChildFragmentManager()
// but i dont know if i used it wrong
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_calculator, container, false);
}
// TODO: Rename method, update argument and hook method into UI event
public void onButtonPressed(Uri uri) {
if (mListener != null) {
mListener.onFragmentInteraction(uri);
}
}
@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 {
void onFragmentInteraction(Uri uri);
}
@Override
public void onFragmentInteraction(Uri uri) {
}
public static class PlaceholderFragment extends Fragment {
private static final String ARG_SECTION_NUMBER = "section_number";
public PlaceholderFragment() {
}
public static Fragment newInstance(int sectionNumber) {
Fragment fragment=null;
switch (sectionNumber){
case 1: fragment=new Basic();
break;
case 2: fragment=new Cientific();
break;
}
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.content_main, container, false);
return rootView;
}
}
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a PlaceholderFragment (defined as a static inner class below).
return PlaceholderFragment.newInstance(position + 1);
}
@Override
public int getCount() {
// Show 2 total pages.
return 2;
}
}