Próbuję przekazać obiekt URI do mojej intencji, aby użyć tego identyfikatora URI w innym działaniu ...
Jak przekazać identyfikator URI?
private Uri imageUri;
....
Intent intent = new Intent(this, GoogleActivity.class);
intent.putExtra("imageUri", imageUri);
startActivity(intent);
this.finish();
Jak mogę teraz użyć tego identyfikatora URI w mojej innej działalności?
imageUri = extras.getString("imageUri"); // I know thats wrong ...
Dzięki chłopaki
java
android
android-intent
uri
Robert El
źródło
źródło
Odpowiedzi:
możesz zapisać uri jako ciąg
a następnie po prostu przekonwertuj ciąg z powrotem na uri w ten sposób
źródło
intent.putExtra("imageUrl", mImageUri.toString());
innej działalnościString imageUrl = getIntent().getStringExtra("imageUrl");
Uri mImageUri = Uri.parse(imageUrl);
Te
Uri
narzędzia klasyParcelable
, dzięki czemu można dodawać i wyodrębnić go bezpośrednio zIntent
Możesz użyć tej samej metody dla dowolnych obiektów, które implementują
Parcelable
, i możesz zaimplementowaćParcelable
na własnych obiektach, jeśli jest to wymagane.źródło
android.net.Uri
a niejava.net.URI
!intent.putExtras(bundle);
, użyjbundle.putParcelable("imageUri", uri);
zamiast używaćintent.putExtra(...);
bezpośrednio wIntent
obiekcie.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
W Intencie możesz bezpośrednio umieścić Uri. Nie musisz konwertować Uri na ciąg i ponownie konwertować na Uri.
Spójrz na to proste podejście.
Aby odzyskać Uri z intencji:
źródło
A potem możesz pobrać to w ten sposób:
źródło
tutaj, jak go używam; Ten przycisk w mojej klasie aktywności CameraActionActivity, w której dzwonię do kamery
I moja inna klasa aktywności DisplayVideo
źródło
Jeśli chcesz użyć standardowego dodatkowego pola danych, możesz zrobić coś takiego:
Dokumentacja dla Intent mówi:
Nie musisz używać wbudowanych standardowych nazw, ale prawdopodobnie jest to dobra praktyka i jest bardziej przydatna do ponownego użycia. Zapoznaj się z dokumentacją programisty, aby uzyskać listę wszystkich wbudowanych standardowych dodatkowych pól danych.
źródło
Uri.parse(extras.getString("imageUri"))
Było przyczyną błędu:Więc zmieniłem na następujące:
i
To rozwiązało problem.
źródło
możesz to zrobić. imageuri można przekształcić w ciąg w ten sposób.
intent.putExtra ("imageUri", imageUri.toString ());
źródło