J'essaie de passer un objet URI à mon intention afin d'utiliser cet URI dans une autre activité ...
Comment passer un URI?
private Uri imageUri;
....
Intent intent = new Intent(this, GoogleActivity.class);
intent.putExtra("imageUri", imageUri);
startActivity(intent);
this.finish();
Comment utiliser maintenant cet URI dans mon autre activité?
imageUri = extras.getString("imageUri"); // I know thats wrong ...
Merci les gars
java
android
android-intent
uri
Robert El
la source
la source
Réponses:
vous pouvez stocker l'URI sous forme de chaîne
puis convertissez simplement la chaîne en uri comme ceci
la source
intent.putExtra("imageUrl", mImageUri.toString());
Dans une autre activitéString imageUrl = getIntent().getStringExtra("imageUrl");
Uri mImageUri = Uri.parse(imageUrl);
La
Uri
classe implémenteParcelable
, vous pouvez donc l'ajouter et l'extraire directement à partir duIntent
Vous pouvez utiliser la même méthode pour tous les objets qui implémentent
Parcelable
, et vous pouvez implémenterParcelable
sur vos propres objets si nécessaire.la source
android.net.Uri
et nonjava.net.URI
!intent.putExtras(bundle);
, utilisezbundle.putParcelable("imageUri", uri);
plutôt que d'utiliserintent.putExtra(...);
directement dans l'Intent
objet.i.putExtra("URIList", uriList.toArray());
->List<Uri> myList = i.getParcelableArrayListExtra("URIList");
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Intent android.content.Intent.putExtra(java.lang.String, android.os.Parcelable)' on a null object reference
Dans Intent, vous pouvez directement mettre Uri. Vous n'avez pas besoin de convertir l'URI en chaîne et de le reconvertir en Uri.
Regardez cette approche simple.
Et pour récupérer Uri de l'intention:
la source
Et puis vous pouvez le récupérer comme ceci:
la source
voici comment je l'utilise; Ce bouton dans ma classe d'activité CameraActionActivity où j'appelle la caméra
Et mon autre cours d' activité DisplayVideo
la source
Si vous souhaitez utiliser un champ de données supplémentaires standard, vous feriez quelque chose comme ceci:
La documentation pour Intent dit:
Vous n'êtes pas obligé d'utiliser les noms standard intégrés, mais c'est probablement une bonne pratique et plus réutilisable. Consultez la documentation du développeur pour obtenir une liste de tous les champs de données supplémentaires standard intégrés.
la source
Le
Uri.parse(extras.getString("imageUri"))
provoquait une erreur:J'ai donc changé comme suit:
et
Cela a résolu le problème.
la source
vous pouvez faire comme ça. imageuri peut être converti en chaîne de cette manière.
intent.putExtra ("imageUri", imageUri.toString ());
la source