Actually the problem is the following, I want to insert into the ViewPager dialog box. I do this as follows, marking the dialog itself:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:id="@+id/scheduler_datetime" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout> 

The code of the dialogue itself:

 public class SchedulerAddEditDialog extends DialogFragment { ViewPager mDateTimePicker; @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { View view = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_scheduler_addedit, null); mDateTimePicker = (ViewPager) view.findViewById(R.id.scheduler_datetime); PagerAdapter pagerAdapter = new PagerAdapter(getFragmentManager()); mDateTimePicker.setAdapter(pagerAdapter); AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setView(view); builder.setTitle(R.string.scheduler); builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); AlertDialog dialog = builder.create(); return dialog; } private class PagerAdapter extends FragmentStatePagerAdapter{ public PagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { //Log.d(TAG, "position is " + position); if (position == 0){ return new DatePickerFragment(); } else if (position == 1){ return new TimePickerFragment(); } return null; } @Override public int getCount() { return 2; } } } 

The fragments themselves are just blanks.

 public class DatePickerFragment extends Fragment { DatePicker mDatePicker; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.pager_datepicker, container, false); mDatePicker = (DatePicker) view.findViewById(R.id.scheduler_datepicker); return view; } } 

And his markup

 <DatePicker xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scheduler_datepicker" android:layout_width="wrap_content" android:layout_height="wrap_content"/> 

Second fragment twin brother

 public class TimePickerFragment extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.pager_timepicker, container, false); return view; } } 

and markup

 <TimePicker xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scheduler_timepicker" android:layout_width="wrap_content" android:layout_height="wrap_content"/> 

When calling a dialog, this error occurs.

--------- beginning of crash E / AndroidRuntime: FATAL EXCEPTION: main Process: myenv.roadmap4, PID: 3010 java.lang.IllegalArgumentException: No view found for id 0x7f0e0090 (myenv.roadmap4: id / scheduler_datetime) for fragment DatePickerFragment {29fcac0a # 2 id = 0x7f0e0090} at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1293)

It is worth commenting out this thing so immediately everything becomes good ... PS In the line

  PagerAdapter pagerAdapter = new PagerAdapter(getFragmentManager()); 

tried to put

  PagerAdapter pagerAdapter = new PagerAdapter(getActivity().getSupportFragmentManager()); 

same error :(

  • Try to transfer getChildFragmentManager () in the ViewPager - YuriSPb
  • ru.stackoverflow.com/a/508153/191270 . The old code, but I think is still up to date - Shwarz Andrei
  • @YuriSPb unfortunately not, getting the error java.lang.IllegalStateException: Fragment doesn’t have a view - plesser

1 answer 1

Swap lines:

  mDateTimePicker.setAdapter(pagerAdapter); PagerAdapter pagerAdapter = new PagerAdapter(getFragmentManager()); 

It should be like this:

  PagerAdapter pagerAdapter = new PagerAdapter(getFragmentManager()); mDateTimePicker.setAdapter(pagerAdapter); 
  • I have exactly as you have written the lines are, I copy it was wrong. Sorry - plesser