fragments in viewpager, no view found error

前端 未结 8 1214
面向向阳花
面向向阳花 2020-12-19 09:23

I have an activity holding a fragment, in this fragment there is a button , when it is clicked, a dialog is popped out.

In this dialog, there is a Viewpager, which

8条回答
  •  时光取名叫无心
    2020-12-19 10:16

    I think you used

    Dialog dialog = new Dialog(context);
    

    Instends this.

    1st Step: Used DialogFragment

    public class MyCustomDialog extends DialogFragment {
        Button mButton;
        EditText mEditText;
    
    
        List listdata;
        int position;
        ViewPager viewpager;
    
        public MyCustomDialog(List listdata, int position) {
            this.listdata = listdata;
            this.position = position;
        }
    
    
    
    
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            final View dialog = inflater.inflate(R.layout.dailoglayout, container);
    
            final Dialog dailog = getDialog();
            dailog.getWindow().setLayout(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
            dailog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
            dailog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
    
            ImageView closebtn = (ImageView) dialog.findViewById(R.id.closeimgeview);
            closebtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dailog.dismiss();
                }
            });
    
            viewpager = (ViewPager) dialog.findViewById(R.id.dailog_viewpager);
    
            **viewpager.setAdapter(new PagerAdapter(getChildFragmentManager(), listdata));** //This Line is Very important
            viewpager.setCurrentItem(position);
    
            return dialog;
        }
    
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setStyle(DialogFragment.STYLE_NORMAL, android.R.style.Theme_Black_NoTitleBar_Fullscreen); //For Full Screen of DailogBox
        }
    

    }

    2nd Step :set The FragmentViewPager

    public class PagerAdapter extends FragmentPagerAdapter   {
    
        private final List pages;
    
        public PagerAdapter(FragmentManager fm, List pages) {
            super(fm);
            this.pages = pages;
        }
    
    
    
        @Override
        public Fragment getItem(int position) {
            return new ViewPagerFragment(pages.get(position));
        }
    
        @Override
        public int getCount() {
            return pages.size();
        }
    }
    

    3rd Step : Fragment View For ViewPager:

    public class ViewPagerFragment extends Fragment {
    
        MasterPageModel masteDetailModel;
    
    
        public ViewPagerFragment(MasterPageModel questionItem) {
            this.masteDetailModel = questionItem;
        }
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View v = inflater.inflate(R.layout.pagerlayout, container, false);
    
            ImageView image = (ImageView) v.findViewById(R.id.pager_imageview);
            Log.i("Image", "=>" + masteDetailModel.imagelarge);
            Picasso.with(getActivity()).load(masteDetailModel.imagethumb).error(R.drawable.img).into(image);
    
            return v;
        }
    

    4th How to Use this dialogfragment:

     MyCustomDialog fragment1 = new MyCustomDialog(listdata, position);
                    EditionDetailActivity act = (EditionDetailActivity) context;
                    FragmentManager fm = act.getSupportFragmentManager();
                    fragment1.show(fm, "");
    

提交回复
热议问题