Je crée une application Android et je veux copier la valeur texte d'un widget EditText. Il est possible pour l'utilisateur d'appuyer sur Menu+A
puis Menu+C
de copier la valeur, mais comment procéder par programmation?
231
Je crée une application Android et je veux copier la valeur texte d'un widget EditText. Il est possible pour l'utilisateur d'appuyer sur Menu+A
puis Menu+C
de copier la valeur, mais comment procéder par programmation?
Réponses:
Utilisez la
ClipboardManager#setPrimaryClip
méthode:ClipboardManager
Référence APIla source
import android.content.ClipboardManager;
label
?Context context = getApplicationContext(); Toast.makeText(context, "text copied", Toast.LENGTH_LONG).show();
Donc, tout le monde est d'accord sur la façon dont cela doit être fait, mais comme personne ne veut donner une solution complète, voici:
Je suppose que vous avez déclaré quelque chose comme le suivant dans le manifeste:
la source
label
innewPlainText
? déclare la documentaionlabel User-visible label for the clip data.
. Mais quand est-illabel
visible pour l'utilisateur? Et quel type de valeur / nom dois-je mettrelabel
?La recherche sur Google vous amène à android.content.ClipboardManager et vous pouvez décider, comme je l'ai fait, que Clipboard n'est pas disponible sur API <11, car la page de documentation indique "Depuis: API niveau 11".
Il existe en fait deux classes, la seconde étendant la première - android.text.ClipboardManager et android.content.ClipboardManager.
android.text.ClipboardManager existe depuis l'API 1, mais il ne fonctionne qu'avec du contenu texte.
android.content.ClipboardManager est le moyen préféré de travailler avec le presse-papiers, mais il n'est pas disponible au niveau API <11 (Honeycomb).
Pour obtenir l'un d'eux, vous avez besoin du code suivant:
Mais pour API <11, vous devez importer
android.text.ClipboardManager
et pour API> = 11android.content.ClipboardManager
la source
vous pouvez essayer cela ..
la source
Voici du code pour implémenter des fonctions de copier-coller depuis EditText (merci à Warpzit pour la vérification de version). Vous pouvez les accrocher à l'événement onclick de votre bouton.
la source
Mise à jour de la bibliothèque de support Android
À partir d'Android Oreo, la bibliothèque de support ne descend qu'à l'API 14. La plupart des applications plus récentes ont probablement également une API minimale de 14, et n'ont donc pas à se soucier des problèmes avec l'API 11 mentionnés dans certaines des autres réponses. Une grande partie du code peut être nettoyée. (Mais consultez mon historique des modifications si vous prenez toujours en charge les versions inférieures.)
Copie
Pâte
J'ajoute ce code en bonus, car le copier / coller se fait généralement par paire.
Remarques
android.content.ClipboardManager
version plutôt que l'ancienneandroid.text.ClipboardManager
. Pareil pourClipData
.context.getSystemService()
.null
. Vous pouvez vérifier chacun d'eux si vous trouvez cette façon plus lisible.la source
Pour activer le copier / coller standard pour TextView, U peut choisir l'une des options suivantes:
Modification du fichier de mise en page: ajoutez la propriété ci-dessous à votre TextView
Dans votre classe Java, écrivez cette ligne deux définissez grammaticalement.
myTextView.setTextIsSelectable(true);
Et appuyez longuement sur TextView, vous pouvez voir la barre d'action copier / coller.
la source
Et importer
import android.content.ClipboardManager;
la source
@FlySwat a déjà donné la bonne réponse, je partage juste la réponse complète:
Utilisez la méthode ClipboardManager.setPrimaryClip ( http://developer.android.com/reference/android/content/ClipboardManager.html ):
Où se
label
trouve une étiquette visible par l'utilisateur pour les données du clip ettext
le texte réel du clip. Selon les documents officiels .Il est important d'utiliser cette importation:
la source
Voici mon code de travail
la source
Pour Kotlin, nous pouvons utiliser la méthode suivante. Vous pouvez coller cette méthode dans une activité ou un fragment.
la source
context.
était la partie que je manquais - pourrait être parce que je le fais dans un fragment.