Saya mencoba meneruskan Objek URI ke Maksud saya untuk menggunakan URI itu di aktivitas lain ...
Bagaimana cara saya lulus URI?
private Uri imageUri;
....
Intent intent = new Intent(this, GoogleActivity.class);
intent.putExtra("imageUri", imageUri);
startActivity(intent);
this.finish();
Bagaimana cara saya menggunakan URI ini sekarang dalam aktivitas saya yang lain?
imageUri = extras.getString("imageUri"); // I know thats wrong ...
Terima kasih kawan
java
android
android-intent
uri
Robert El
sumber
sumber
Jawaban:
Anda bisa menyimpan uri sebagai string
dan kemudian ubah string kembali menjadi uri seperti ini
sumber
intent.putExtra("imageUrl", mImageUri.toString());
Dalam aktivitas lainString imageUrl = getIntent().getStringExtra("imageUrl");
Uri mImageUri = Uri.parse(imageUrl);
The
Uri
mengimplementasikan kelasParcelable
, sehingga Anda dapat menambahkan dan ekstrak langsung dariIntent
Anda bisa menggunakan metode yang sama untuk setiap objek yang diimplementasikan
Parcelable
, dan Anda bisa mengimplementasikanParcelable
pada objek Anda sendiri jika diperlukan.sumber
android.net.Uri
dan tidakjava.net.URI
!intent.putExtras(bundle);
, gunakanbundle.putParcelable("imageUri", uri);
alih-alih menggunakanintent.putExtra(...);
langsung diIntent
objek.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
Di Intent, Anda bisa langsung meletakkan Uri. Anda tidak perlu mengubah Uri menjadi string dan mengubahnya kembali menjadi Uri.
Lihat pendekatan sederhana ini.
Dan untuk mendapatkan Uri kembali dari niat:
sumber
Dan kemudian Anda dapat mengambilnya seperti ini:
sumber
di sini bagaimana saya menggunakannya; Tombol ini di dalam kelas Aktivitas CameraActionActivity tempat saya memanggil kamera
Dan Kelas Aktivitas DisplayVideo saya yang lain
sumber
Jika Anda ingin menggunakan bidang data tambahan standar, Anda akan melakukan sesuatu seperti ini:
Dokumentasi untuk Intent mengatakan:
Anda tidak harus menggunakan nama standar bawaan, tetapi ini mungkin praktik yang baik dan lebih dapat digunakan kembali. Lihat dokumentasi pengembang untuk daftar semua bidang data tambahan standar bawaan.
sumber
Itu
Uri.parse(extras.getString("imageUri"))
menyebabkan kesalahan:Jadi saya berubah menjadi yang berikut:
dan
Ini memecahkan masalah.
sumber
kamu bisa melakukan seperti ini. imageuri dapat diubah menjadi string seperti ini.
intent.putExtra ("imageUri", imageUri.toString ());
sumber