Android 在ViewPager上隐藏视图时出现问题';s片段

Android 在ViewPager上隐藏视图时出现问题';s片段,android,android-fragments,Android,Android Fragments,当点击imageView时,我试图隐藏并显示视图,我的ViewPager中有3个片段,所以问题是当我在第一个视图上点击imageView时,它工作正常(我的视图被隐藏),但当我在第2或第3个片段上点击imageView时,它从不隐藏视图,它只在我的第一个片段上工作,这是我的代码: public class MainActivity extends AppCompatActivity { private static int[] imageArray; static Image

当点击imageView时,我试图隐藏并显示视图,我的ViewPager中有3个片段,所以问题是当我在第一个视图上点击imageView时,它工作正常(我的视图被隐藏),但当我在第2或第3个片段上点击imageView时,它从不隐藏视图,它只在我的第一个片段上工作,这是我的代码:

public class MainActivity extends AppCompatActivity {

    private static int[] imageArray;

    static ImageLoader imageLoader;
    static ArrayList<String> urlArray;
    static DisplayImageOptions options;
    static ProgressBar spinner;

    static PhotoViewAttacher mAttacher;
    static Boolean isToolBarShown = true;

    static Button nextButton , previousButton;

    static ViewPager viewPager ;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        urlArray = new ArrayList<>();

        urlArray.add("http://i.imgur.com/uLRgvM8.png");
        urlArray.add("http://i.imgur.com/LUuJ4FO.png");
        urlArray.add("http://i.imgur.com/7SSBNBA.jpg");


        // Create global configuration and initialize ImageLoader with this config
        DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
                .cacheInMemory(true)
                .imageScaleType(ImageScaleType.EXACTLY)
                .displayer(new FadeInBitmapDisplayer(300)).build();

        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
                getApplicationContext())
                .defaultDisplayImageOptions(defaultOptions)
                .memoryCache(new WeakMemoryCache()).build();

        ImageLoader.getInstance().init(config);


        imageLoader = ImageLoader.getInstance();
        options = new DisplayImageOptions.Builder().cacheInMemory(true)
                .cacheOnDisk(true)
                .resetViewBeforeLoading(true).build();

//initialize image view
        ImageView imageView = (ImageView) findViewById(R.id.imageView);

        ImageFragmentPagerAdapter imageFragmentPagerAdapter = new ImageFragmentPagerAdapter(getSupportFragmentManager());
         viewPager = (ViewPager) findViewById(R.id.pager);

        viewPager.setOffscreenPageLimit(1);


        viewPager.setAdapter(imageFragmentPagerAdapter);
    }







    public static class ImageFragmentPagerAdapter extends FragmentPagerAdapter {
        public ImageFragmentPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public int getCount() {
            return urlArray.size();
        }

        @Override
        public Fragment getItem(int position) {
            //SwipeFragment fragment = new SwipeFragment();
            return SwipeFragment.newInstance(position);
        }

    }

    public static class SwipeFragment extends Fragment {

        private int position;
        private ImageView imageView;
        private RelativeLayout relativeLayout;

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            final View swipeView = inflater.inflate(R.layout.swipe_fragment, container, false);

            imageView = (ImageView) swipeView.findViewById(R.id.imageView);
            spinner = (ProgressBar) swipeView.findViewById(R.id.spinner);
            relativeLayout = (RelativeLayout) swipeView.findViewById(R.id.tool_bar);
            Bundle bundle = getArguments();
            nextButton = (Button)swipeView.findViewById(R.id.next_button);
            previousButton = (Button)swipeView.findViewById(R.id.button_previous);

            position = bundle.getInt("position");

            Toast.makeText(getContext(),"NEW PAGE CALLED",Toast.LENGTH_SHORT).show();
            if (isToolBarShown){

                relativeLayout.setVisibility(View.VISIBLE);
            }else {

                relativeLayout.setVisibility(View.GONE);
            }
            mAttacher = new PhotoViewAttacher(imageView);



//            viewPager.OnPageChangeListener(new ViewPager.OnPageChangeListener() {
//                @Override
//                public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
//
//
//                }
//
//                @Override
//                public void onPageSelected(int position) {
//
//                    loadImageView(position,imageView);
//
//                }
//
//                @Override
//                public void onPageScrollStateChanged(int state) {
//
//                }
//            });

            previousButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    viewPager.setCurrentItem(viewPager.getCurrentItem()-1,true);
                }

            });

            nextButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    viewPager.setCurrentItem(viewPager.getCurrentItem()+1,true);
                }

            });

            return swipeView;
        }





        public void loadImageView(int position, final ImageView imageView ){

            imageLoader.displayImage(urlArray.get(position), imageView, options, new ImageLoadingListener() {
                @Override
                public void onLoadingStarted(String imageUri, View view) {

                }

                @Override
                public void onLoadingFailed(String imageUri, View view, FailReason failReason) {


                    spinner.setVisibility(View.GONE);
                }

                @Override
                public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {

                     mAttacher = new PhotoViewAttacher(imageView);

                    mAttacher.setOnViewTapListener(new PhotoViewAttacher.OnViewTapListener() {
                        @Override
                        public void onViewTap(View view, float x, float y) {

                            if (view == imageView){
                                if (relativeLayout.getVisibility() == View.VISIBLE){

                                    isToolBarShown = false;
                                    relativeLayout.setVisibility(View.GONE);

                                }else {

                                    isToolBarShown = true;
                                    relativeLayout.setVisibility(View.VISIBLE);
                                }

                                Log.d("OOPS","WHAT THE.., WHAT IS WRONG HERE");
                            }

                        }
                    });


                    if(mAttacher!=null){
                        mAttacher.update();
                    }else{
                        mAttacher = new PhotoViewAttacher(imageView);
                    }


                    spinner.setVisibility(View.GONE);
                }

                @Override
                public void onLoadingCancelled(String imageUri, View view) {


                    spinner.setVisibility(View.GONE);
                }
            }, new ImageLoadingProgressListener() {
                @Override
                public void onProgressUpdate(String imageUri, View view, int current, int total) {

                    spinner.setVisibility(View.VISIBLE);
                    spinner.setProgress((current*100)/total);


                }
            });

        }



        static SwipeFragment newInstance(int position) {
            SwipeFragment swipeFragment = new SwipeFragment();
            Bundle bundle = new Bundle();
            bundle.putInt("position", position);
            swipeFragment.setArguments(bundle);
            return swipeFragment;
        }


        @Override
        public void setUserVisibleHint(boolean isVisibleToUser) {
            super.setUserVisibleHint(isVisibleToUser);
            if (isVisibleToUser) {
                // load data here
//                if (getView() != null) {
//                    isViewShown = true;
//                    // fetchdata() contains logic to show data when page is selected mostly asynctask to fill the data
//                    loadImageView(position , imageView);
//                } else {
//                    isViewShown = false;
//                }
            }
        }





}}
public类MainActivity扩展了AppCompatActivity{
私有静态int[]图像数组;
静态图像加载器;
静态ArrayList URL数组;
静态显示图像选项;
静态旋转杆;
静态光电转换器;
静态布尔值IstolBarShowed=true;
静态按钮下一个按钮,上一个按钮;
静态视图寻呼机;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
urlArray=newarraylist();
urlArray.add(“http://i.imgur.com/uLRgvM8.png");
urlArray.add(“http://i.imgur.com/LUuJ4FO.png");
urlArray.add(“http://i.imgur.com/7SSBNBA.jpg");
//创建全局配置并使用此配置初始化ImageLoader
DisplayImageOptions defaultOptions=新建DisplayImageOptions.Builder()
.cacheInMemory(真)
.imageScaleType(imageScaleType.Justice)
.displayer(新的FadeInBitmapDisplayer(300)).build();
ImageLoaderConfiguration配置=新建ImageLoaderConfiguration.Builder(
getApplicationContext())
.defaultDisplayImageOptions(默认选项)
.memoryCache(新的WeakMemoryCache()).build();
ImageLoader.getInstance().init(配置);
imageLoader=imageLoader.getInstance();
选项=新建DisplayImageOptions.Builder().cacheInMemory(true)
.cacheOnDisk(真)
.resetViewBeforeLoading(true).build();
//初始化图像视图
ImageView ImageView=(ImageView)findViewById(R.id.ImageView);
ImageFragmentPagerAdapter ImageFragmentPagerAdapter=新的ImageFragmentPagerAdapter(getSupportFragmentManager());
viewPager=(viewPager)findViewById(R.id.pager);
viewPager.setOffscreenPageLimit(1);
viewPager.setAdapter(imageFragmentPagerAdapter);
}
公共静态类ImageFragmentPagerAdapter扩展了FragmentPagerAdapter{
公共图像碎片页面雷达(碎片管理器fm){
超级(fm);
}
@凌驾
public int getCount(){
返回urlArray.size();
}
@凌驾
公共片段getItem(int位置){
//SwipeFragment=新的SwipeFragment();
返回SwipeFragment.newInstance(位置);
}
}
公共静态类SwipeFragment扩展了片段{
私人职位;
私人影像视图;
私人亲戚;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
最终视图swipeView=充气机。充气(R.layout.swipe_碎片,容器,假);
imageView=(imageView)swipeView.findViewById(R.id.imageView);
微调器=(ProgressBar)swipeView.findviewbyd(R.id.spinner);
relativeLayout=(relativeLayout)swipeView.findViewById(R.id.tool_-bar);
Bundle=getArguments();
nextButton=(按钮)swipeView.findviewbyd(R.id.next_按钮);
previousButton=(按钮)swipeView.findViewById(R.id.Button\u previous);
位置=bundle.getInt(“位置”);
Toast.makeText(getContext(),“新页面调用”,Toast.LENGTH_SHORT.show();
如果(如图所示){
relativeLayout.setVisibility(View.VISIBLE);
}否则{
relativeLayout.setVisibility(View.GONE);
}
mAttacher=新的PhotoViewAttacher(imageView);
//viewPager.OnPageChangeListener(新的viewPager.OnPageChangeListener(){
//@覆盖
//已滚动页面上的公共无效(int-position、float-positionOffset、int-positionOffsetPixels){
//
//
//                }
//
//@覆盖
//已选择页面上的公共无效(内部位置){
//
//loadImageView(位置,图像视图);
//
//                }
//
//@覆盖
//公共无效onPageScrollStateChanged(int状态){
//
//                }
//            });
previousButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
viewPager.setCurrentItem(viewPager.getCurrentItem()-1,true);
}
});
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
viewPager.setCurrentItem(viewPager.getCurrentItem()+1,true);
}
});
返回swipeView;
}
公共无效loadImageView(内部位置,最终图像视图){
imageLoader.displayImage(urlArray.get(位置)、imageView、选项、新ImageLoadingListener(){
@凌驾
public void onLoadingStarted(字符串imageUri,视图){
}
@凌驾
public void onload失败(字符串imageUri、视图视图、失败原因){
spinner.setVisibility(View.GONE);
}
@凌驾
public void onLoadingComplete(字符串imageUri、视图视图、位图加载图像){
mAttacher=新的PhotoViewAttacher(imageView);
mAttacher.setOnViewTapListener(新的PhotoViewAttacher.OnViewTapLis
mViewPager.setoffscreenpagelimit(2)
//2 is important over here.
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();

public void addFragment(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }