2017-10-20 40 views
0

Je suis désolée de venir demander de l'aide aux gens, mais je suis bloquée par ce problème depuis un moment et ça me rend folle.L'image de la caméra n'apparaît pas dans la deuxième activité

J'essaie de prendre un bouton de MainActivity où il vous met dans l'appareil photo et prend une photo. Il vous emmène ensuite à l'activité suivante où il y a un aperçu de la même image. Mais chaque fois que j'arrive à l'activité suivante, l'image n'apparaît pas, juste un espace réservé. Qu'est-ce que je fais mal? Est-ce que je manque quelque chose dans le code? J'ai regardé autour de moi et j'ai essayé d'utiliser Uri, mais apparemment il n'est plus autorisé car vous devez donner des permissions spécifiques pour l'action, donc FileProvider est recommandé, mais honnêtement c'est un peu trop dur pour un débutant comme moi. J'ai essayé et échoué pendant des heures.

MainActivity

public class MainActivity extends AppCompatActivity { 

int CAPTURE_REQUEST; 
Button button; 
Bitmap thumbnail; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    button = (Button) findViewById(R.id.button); 

    button.setOnClickListener(new Button.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(cameraIntent, CAPTURE_REQUEST); 
     } 

    }); 
} 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK) { 
     if (requestCode == CAPTURE_REQUEST) { 
      Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
      sendImage(); 
     } 
    } 
} 


private void sendImage() { 
    Intent intent = new Intent(MainActivity.this, NextActivity.class); 
    intent.putExtra("image", thumbnail); 
    startActivity(intent); 
}} 

NextActivity

public class NextActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    ImageView imageView = (ImageView) findViewById(R.id.imageView); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_next); 

    Bundle extras = getIntent().getExtras(); 
    if (extras != null) { 
     Bitmap image = (Bitmap) extras.get("image"); 
     if (image != null) { 
      imageView.setImageBitmap(image); 
     } 
    } 
}} 
+0

Dans votre fonction sendImage(), contient-elle l'image correcte? –

+0

Je le crois. Mais je l'admets, Android Studies m'indique que lorsque je déclare une image en miniature Bitmap = (Bitmap) yada yada, elle n'est jamais utilisée nulle part ailleurs même si je l'utilise dans sendImage() –

Répondre

2

changement onActivityResult à

super.onActivityResult(requestCode, resultCode, data); 
if (resultCode == RESULT_OK) { 
    if (requestCode == CAPTURE_REQUEST) { 
     thumbnail = (Bitmap) data.getExtras().get("data"); 
     sendImage(); 
    } 
} 

Vous surchargez votre variable globale avec la déclaration locale.