简体   繁体   English

Android-如何“无效” FragmentPagerAdapter中的片段?

[英]Android - How to “invalidate” a Fragment in a FragmentPagerAdapter?

I have an Android FragmentPagerAdapter that uses BitmapFragment (below), and it works great. 我有一个使用BitmapFragment的Android FragmentPagerAdapter(如下),它工作得很好。 Now I'm trying to switch out the Images on the fly. 现在,我试图动态切换图像。 I've tried changing the ImageView but nothing changes. 我试过更改ImageView,但没有任何更改。 And I've tried using a FragmentTransaction.replace to swap it out, but I get an Invalid Argument exception. 我尝试使用FragmentTransaction.replace换出它,但是我收到了Invalid Argument异常。 I know getImageViewAtPage() works and "bitmap" is a valid Bitmap. 我知道getImageViewAtPage()可以工作,并且“位图”是有效的位图。

Thanks! 谢谢!

private class BitmapFragment extends Fragment {
    private int mPosition = 0;
    private ImageView mImageView;

    private BitmapFragment(int num){
        super();
        mPosition = num;
    }

    public ImageView getImageView(){
        return mImageView;
    }

    /**
     * The Fragment's UI is just a Bitmap
     */
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_bitmap, container, false);
        try{
            mImageView = (ImageView) v.findViewById(R.id.bitmap);
            mImageView.setImageBitmap(bitmap);   
        }
        catch(Exception e){
            e.printStackTrace();
        }
        return v;
    }
}

        private void changeImage() {
            /*

            BitmapFragment bf = new BitmapFragment(mCurrentPageIndex);
            FragmentTransaction ft = mReaderViewHandler.getSupportFragmentManager().beginTransaction();
            ft.replace(R.layout.fragment_bitmap, bf);
            ft.commit();
    */
            ImageView v = getImageViewAtPage(mCurrentPageIndex);
            try {
                v.setImageBitmap(bitmap);
            } catch (Exception e) {

                e.printStackTrace();
            }
            v.invalidate();
        }

请试着做mImageView.setImageBitmap()的内部changeImage()方法,而不是采用v = getImageViewAtPage和做v.setImageBitmap()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM