2011-08-26 3 views
2

J'ai un Android FragmentPagerAdapter qui utilise BitmapFragment (ci-dessous), et il fonctionne très bien. Maintenant, j'essaie de changer les images à la volée. J'ai essayé de changer le ImageView mais rien ne change. Et j'ai essayé d'utiliser un FragmentTransaction.replace pour l'échanger, mais j'ai une exception d'Argument invalide. Je sais que getImageViewAtPage() fonctionne et "bitmap" est un bitmap valide.Android - Comment "invalider" un fragment dans un FragmentPagerAdapter?

Merci!

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(); 
     } 

Répondre

0

S'il vous plaît essayer de faire mImageView.setImageBitmap() l'intérieur de votre méthode changeImage() au lieu d'utiliser v = getImageViewAtPage et de faire v.setImageBitmap().

Questions connexes