Ich versuche, ein URI-Objekt an meine Absicht zu übergeben, um diesen URI in einer anderen Aktivität zu verwenden ...
Wie übergebe ich eine URI?
private Uri imageUri;
....
Intent intent = new Intent(this, GoogleActivity.class);
intent.putExtra("imageUri", imageUri);
startActivity(intent);
this.finish();
Wie verwende ich diesen URI jetzt in meiner anderen Aktivität?
imageUri = extras.getString("imageUri"); // I know thats wrong ...
Danke Jungs
java
android
android-intent
uri
Robert El
quelle
quelle
Antworten:
Sie können den Uri als String speichern
und dann konvertiere einfach den String zurück in uri wie folgt
quelle
intent.putExtra("imageUrl", mImageUri.toString());
In anderen AktivitätenString imageUrl = getIntent().getStringExtra("imageUrl");
Uri mImageUri = Uri.parse(imageUrl);
Die
Uri
Klasse wird implementiertParcelable
, sodass Sie sie direkt aus der hinzufügen und extrahieren könnenIntent
Sie können dieselbe Methode für alle zu implementierenden Objekte verwenden und bei Bedarf auch für Ihre eigenen Objekte
Parcelable
implementierenParcelable
.quelle
android.net.Uri
und nichtjava.net.URI
!intent.putExtras(bundle);
, verwenden Sie diese Option,bundle.putParcelable("imageUri", uri);
anstatt sieintent.putExtra(...);
direkt imIntent
Objekt zu verwenden.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
In Intent können Sie Uri direkt einfügen. Sie müssen den Uri nicht in einen String konvertieren und erneut in Uri konvertieren.
Schauen Sie sich diesen einfachen Ansatz an.
Und um Uri von seiner Absicht zurückzubekommen:
quelle
Und dann können Sie es so holen:
quelle
hier, wie ich es benutze; Diese Schaltfläche in meiner CameraActionActivity- Aktivitätsklasse, in der ich die Kamera aufrufe
Und meine andere DisplayVideo- Aktivitätsklasse
quelle
Wenn Sie ein zusätzliches Standarddatenfeld verwenden möchten, gehen Sie folgendermaßen vor:
Die Dokumentation zu Intent lautet:
Sie müssen die integrierten Standardnamen nicht verwenden, aber es ist wahrscheinlich eine gute Praxis und wiederverwendbarer. In der Entwicklerdokumentation finden Sie eine Liste aller integrierten zusätzlichen Standarddatenfelder.
quelle
Das
Uri.parse(extras.getString("imageUri"))
verursachte einen Fehler:Also habe ich folgendes geändert:
und
Dies löste das Problem.
quelle
Sie können so tun. imageuri kann so in einen String umgewandelt werden.
intent.putExtra ("imageUri", imageUri.toString ());
quelle