0

J'ai une image bitmap dans mon activité comme ceci:Comment transférer l'image bitmap de l'activité à fragmenter

Bitmap image4 = BitmapFactory.decodeResource(getResources(), R.drawable.hello); 
     image1.setImageBitmap(image4); 

Je suis en train de passer cette image dans le fragment en utilisant ce code:

FragmentManager fragmentManager = getFragmentManager(); 
       FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
       fragmentTransaction.addToBackStack(null); 
       Secondfrag yourFragment = new Secondfrag(); 
       Bundle b = new Bundle(); 
       b.putParcelable("BitmapImage",image4); 

       yourFragment.setArguments(b); 
       fragmentTransaction.add(R.id.frag, yourFragment, "FRAGMENT"); 
       fragmentTransaction.commit(); 

et essayer d'obtenir cette image dans le fragment comme celui-ci:

Bundle b=this.getArguments(); 
     String page=b.getString("BitmapImage"); 

     image2.setImageURI(Uri.parse(page)); 

Mais il n'y a pas d'affichage d'image dans mon Fragment.How à résol ve ce problème? Passer la référence d'image est un bon moyen plutôt que de transmettre des données d'image entières.

+1

passant une référence serait une bonne idée, je pense –

+0

Comme l'a dit @TahmidRahman, vous pouvez passer la référence :) –

+0

Vous pouvez le faire en enregistrant en interne espace de rangement.. – Arjun

Répondre

0

convertir en tableau d'octets

ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); 
    byte[] byteArray = stream.toByteArray(); 

Bundle b = new Bundle(); 
b.putByteArray("image",byteArray); 


    // your fragment code 
fragment.setArguments(b); 

valeur Obtenir du fragment de destination

byte[] byteArray = getArgument().getByteArrayExtra("image"); 
Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); 

Crédit https://stackoverflow.com/a/33797090/4316327

0

Dans votre cas, vous pouvez passer votre image Uri

Si vous souhaitez obtenir une image de la mémoire interne, vous pouvez passer Uri. Mais si vous voulez juste une ressource spécifique (c'est-à-dire drawable) alors, il pourrait juste passer son nom (qui est String).

Vous pouvez vérifier cette solution Passing Uri to an Intent

0

Vous pouvez simplement passer votre chemin de l'image/URI dans le paquet.

Dans votre cas, vous utilisez vos ressources pour créer le bitmap. Vous pouvez utiliser le même code pour obtenir le bitmap dans votre fragment. Les ressources sont disponibles dans le fragment sous le nom getActivity(). GetResources();

Bitmap image4 = BitmapFactory.decodeResource(getActivity().getResources(), R.drawable.hello); 
    image1.setImageBitmap(image4); 
0

S'il vous plaît essayer cette méthode

private void nextpageintent(String photoUri){ 

Bundle bundle = new Bundle(); 
bundle.putString("photo", photoUri); 
picture picture = new picture(); 
picture .setArguments(bundle); 
FragmentTransaction transaction = null; 
transaction = getFragmentManager().beginTransaction(); 
transaction.replace(R.id.container, picture); 
transaction.addToBackStack(null); 
transaction.commit(); 

}

0

Ici, ce problème, vous pouvez simplement résoudre en utilisant setter getter de la classe Singleton, d'abord faire une classe Ben pour votre stockage bitmap.

class BitmapStorage { 
private static volatile BitmapStorage instance = null; 
private Bitmap bitmap = null; 
private BitmapStorage() {} 

    public static BitmapStorage getInstance() { 
     if (instance == null) { 
      synchronized(BitmapStorage.class) { 
       if (instance == null) { 
        instance = new BitmapStorage(); 
       } 
      } 
     } 
     return instance; 
    } 

    public Bitmap getBitmap(){ 
      return bitmap; 
    } 

    public void setBitmap(Bitmap bitmap){ 
      this.bitmap = bitmap; 
    } 
} 

Ensuite, après votre activité, définissez bitmap dans votre classe de modèle. Comme

BitmapStrorage bs = getInstance(); 
Bitmap image4 = BitmapFactory.decodeResource(getResources(), R.drawable.hello); 
Bs.setBitmap(image4); 

chaque fois appel fragment selon le cycle de vie du fragment puis OnCreate méthode premier appel, donc ici nous pouvons vérifier bitmap est nulle ou non et obtenir bitmap et l'utiliser. peut ne pas vérifier cette solution, mais je pense que c'est un travail pour vous.

0

Votez pour Zeerak Hameem vous devriez penser à différentes façons