Android: FragmentPagerAdapter: getItem method called twice on First time

前端 未结 5 1471
一整个雨季
一整个雨季 2020-12-15 04:44

In My application, I have used the ViewPager. Like,

(say main.xml)



        
5条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-15 05:12

    in getItem method i wrote this..

    @Override
    public Fragment getItem(int index) {
        EditFragment frag = new EditFragment();
        Bundle args = new Bundle();
        args.putSerializable("currentItem", itemsList.get(index));
        frag.setArguments(args);
        return (frag);
    }
    

    here itemsList.get(index) is the model class object which i will use in EditFragment class. here is that.

     @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
        View result = inflater.inflate(R.layout.pager_fragment_layout, container, false);
        image = (ImageView)result.findViewById(R.id.pager_image);
        text = (TextView)result.findViewById(R.id.pager_item_desc);
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getActivity()).build();
        ImageLoader.getInstance().init(config);
        imLoader = ImageLoader.getInstance();
    
                ****NOTE
        final SwapItems itemList = (SwapItems) getArguments().getSerializable("currentItem");
    
        imagePath = itemList.getPaths().get(0);
        imLoader.displayImage(imagePath,image);
        text.setText(itemList.getItemDescription());
    
        image.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Fragment fragment = new ItemImagesFragment();
                FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                Bundle bundle = new Bundle();
                bundle.putSerializable("val", itemList);
                fragment.setArguments(bundle);
                fragmentTransaction.replace(R.id.content_frame, fragment);
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.commit();
            }
        });
        return result;
    }
    

    NOTE: here i am getting swapitems model object from previous getItem method is 'final'. this solves my issue. Earlier i was initialized the same object with static as modifier.

    hope yours will also clear

提交回复
热议问题