Saya sedang membangun aplikasi Android dan saya ingin menyalin nilai teks dari widget EditText. Adalah mungkin bagi pengguna untuk menekan Menu+A
kemudian Menu+C
menyalin nilainya, tetapi bagaimana saya akan melakukan ini secara terprogram?
231
Jawaban:
Gunakan
ClipboardManager#setPrimaryClip
metode:ClipboardManager
Referensi APIsumber
import android.content.ClipboardManager;
label
?Context context = getApplicationContext(); Toast.makeText(context, "text copied", Toast.LENGTH_LONG).show();
Jadi semua orang sepakat tentang bagaimana ini harus dilakukan, tetapi karena tidak ada yang mau memberikan solusi lengkap, begini:
Saya berasumsi Anda memiliki sesuatu seperti berikut yang dinyatakan dalam manifes:
sumber
label
innewPlainText
? status dokumentasilabel User-visible label for the clip data.
. Tetapi kapan hal itulabel
terlihat oleh pengguna? Dan nilai / nama apa yang harus saya masukkanlabel
?Googling membawa Anda ke android.content.ClipboardManager dan Anda dapat memutuskan, seperti yang saya lakukan, bahwa Clipboard tidak tersedia di API <11, karena halaman dokumentasi mengatakan "Sejak: API Level 11".
Sebenarnya ada dua kelas, yang kedua memperpanjang yang pertama - android.text.ClipboardManager dan android.content.ClipboardManager.
android.text.ClipboardManager sudah ada sejak API 1, tetapi hanya berfungsi dengan konten teks.
android.content.ClipboardManager adalah cara yang disukai untuk bekerja dengan clipboard, tetapi itu tidak tersedia di API Level <11 (Honeycomb).
Untuk mendapatkannya, Anda memerlukan kode berikut:
Tetapi untuk API <11 Anda harus mengimpor
android.text.ClipboardManager
dan untuk API> = 11android.content.ClipboardManager
sumber
kamu bisa coba ini ..
sumber
Berikut adalah beberapa kode untuk mengimplementasikan beberapa fungsi salin dan tempel dari EditText (terima kasih kepada Warpzit untuk pemeriksaan versi). Anda dapat mengaitkan ini ke acara klik tombol Anda.
sumber
Pembaruan perpustakaan dukungan Android
Pada Android Oreo, perpustakaan dukungan hanya turun ke API 14. Sebagian besar aplikasi yang lebih baru mungkin juga memiliki min API 14, dan dengan demikian tidak perlu khawatir tentang masalah dengan API 11 yang disebutkan dalam beberapa jawaban lain. Banyak kode dapat dibersihkan. (Tetapi lihat riwayat edit saya jika Anda masih mendukung versi yang lebih rendah.)
Menyalin
Tempel
Saya menambahkan kode ini sebagai bonus, karena salin / tempel biasanya dilakukan berpasangan.
Catatan
android.content.ClipboardManager
versi daripada yang lamaandroid.text.ClipboardManager
. Sama untukClipData
.context.getSystemService()
.null
. Anda dapat memeriksa masing-masing jika Anda menemukan cara lebih mudah dibaca.sumber
Untuk mengaktifkan salin / tempel standar untuk TextView, Anda dapat memilih salah satu dari yang berikut:
Ubah file tata letak: tambahkan properti di bawah ini ke TextView Anda
Di kelas Java Anda, tulis baris ini dua set secara tata bahasa.
myTextView.setTextIsSelectable(true);
Dan tekan lama pada TextView Anda dapat melihat copy / paste action bar.
sumber
Dan impor
import android.content.ClipboardManager;
sumber
@FlySwat sudah memberikan jawaban yang benar, saya hanya membagikan jawaban yang lengkap:
Gunakan metode ClipboardManager.setPrimaryClip ( http://developer.android.com/reference/android/content/ClipboardManager.html ):
Di mana
label
label yang dapat dilihat pengguna untuk data klip dantext
merupakan teks aktual dalam klip. Menurut dokumen resmi .Penting untuk menggunakan impor ini:
sumber
Ini kode kerja saya
sumber
Untuk Kotlin, kita dapat menggunakan metode berikut. Anda dapat menempelkan metode ini di dalam suatu aktivitas atau fragmen.
sumber
context.
adalah bagian yang saya lewatkan - bisa jadi karena saya melakukannya dalam sebuah fragmen.