Android 在ViewPager上隐藏视图时出现问题';s片段
当点击imageView时,我试图隐藏并显示视图,我的ViewPager中有3个片段,所以问题是当我在第一个视图上点击imageView时,它工作正常(我的视图被隐藏),但当我在第2或第3个片段上点击imageView时,它从不隐藏视图,它只在我的第一个片段上工作,这是我的代码: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
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);
}