【问题标题】:ViewPager fragment content is blank at first time but works fine after first timeViewPager 片段内容第一次为空白,但第一次后工作正常
【发布时间】:2020-11-28 08:53:18
【问题描述】:

在我的应用程序中,我使用回收器视图来显示图像,单击每个图像应该打开一个视图寻呼机并显示当前图像,但问题是当我第一次单击任何图像时,它会显示空白片段,之后我点击返回键,它再次显示回收站视图,现在我的应用程序工作正常,点击任何图像完美显示包含图像的片段。提前致谢。 这是我的回收站视图代码

@Override
public void onBindViewHolder(ViewHolder holder, final int position){
    CardView cv = holder.cardView;
//        Skiped un neccessery code from here

        cv.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent;
            if (is_image_file){
                intent = new Intent(context, ImageOpener.class);
            }
            else {
                intent = new Intent(context, VideoPlayer.class);
            }
            intent.putExtra("POSITION", position );
            context.startActivity(intent);
        }
    });
}

这是我的 ImageOpener.java 类代码

public class ImageOpener extends AppCompatActivity {
    Utils utils = new Utils();
    private ArrayList<String> images_paths;
    private int size_of_pager, position;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_opener);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        ActionBar actionBar = getSupportActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);

        images_paths = utils.load_images();
        position = getIntent().getExtras().getInt("POSITION");
        size_of_pager = images_paths.size();

        SectionsPagerAdapter pagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
        ViewPager pager = (ViewPager) findViewById(R.id.pager);
        pager.setOffscreenPageLimit(size_of_pager);
        pager.setAdapter(pagerAdapter);
        pager.setCurrentItem(position);
    }

    private class SectionsPagerAdapter extends FragmentPagerAdapter{
        public SectionsPagerAdapter(FragmentManager fm){
            super(fm);
        }

        @Override
        public int getCount(){
            return size_of_pager;
        }

        @Override
        public Fragment getItem(int pos){
            return new OpenImageSlideFragment(pos);
        }
    }
}

这是我的 OpenImageSlideFragment.java 类代码

public class OpenImageSlideFragment extends Fragment {
    Utils utils = new Utils();
    ImageButton save_button, share_button;
    private ArrayList<String> images_path;
    private int position;
    String current_file;

    public OpenImageSlideFragment(int position) {
        this.position = position;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_open_image_slide, container, false);
        TouchImageView preview = (TouchImageView) rootView.findViewById(R.id.preview_image);
        images_path = utils.load_images();
        current_file = images_path.get(position);
        File imgFile = new File(current_file);
        Uri uri = Uri.fromFile(imgFile.getAbsoluteFile());
        Picasso.get().load(uri).into(preview);
        return rootView;
    }
}

Utils.load_image() 的代码

public ArrayList<String> load_images(){
    System.out.println("in load image function");
    File path = new File(Environment.getExternalStoragePublicDirectory(""), "some/path/");
    File[] all_images = path.listFiles();

    ArrayList<String > imagePaths = new ArrayList<>();
//        for (int j=0; j<=2; j++)    //for just testing purpose
        for (int i = 0; i < all_images.length; i++) {
            System.out.println(all_images[i].getAbsolutePath());
            if (all_images[i].getAbsolutePath().endsWith(".jpg")) {
                imagePaths.add(all_images[i].getAbsolutePath());
            }
        }
        return  imagePaths;
    }

【问题讨论】:

    标签: android android-fragments android-viewpager


    【解决方案1】:

    如果您使用 viewpager 来显示多张图片,请查看此链接,它将对您有所帮助

        https://youtu.be/DBOIQP3lI_w
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-01
      • 2020-06-04
      • 1970-01-01
      • 2023-04-07
      相关资源
      最近更新 更多