2010-01-29 8 views
6

J'essaie de mettre en œuvre une fonction copier/coller. Comment puis-je obtenir une sélection de texte à partir d'un EditText?Android - obtenir la sélection du texte de EditText

EditText et=(EditText)findViewById(R.id.title); 

blabla onclicklistener sur un bouton:

int startSelection=et.getSelectionStart(); 
int endSelection=et.getSelectionEnd(); 

Je suis coincé. Des idées?

Répondre

12

On dirait que vous avez déjà fait la partie difficile en trouvant ce que la zone sélectionnée est. Maintenant vous avez juste besoin de tirer cette sous-chaîne hors du texte intégral.

Essayez ceci:

String selectedText = et.getText().substring(startSelection, endSelection); 

Il est juste une opération Java String de base.

+5

Un petit reproche avec Android est que getSelectionStart() et getSelectionEnd() fait référence à l'ordre dans lequel des choses a été choisi, ce qui doesn Ne pas nécessairement conduire à Start andy

+0

Les gars, je fais comme votre réponse, mais ma méthode getselectionStart() et getSelectionEnd() sont avec des problèmes. Les deux retournent la même valeur. Et.getText() renvoie un editable. – FpontoDesenv

+0

substring() nees a Chaîne. Vous devez ajouter toString(). C'est - et.getText(). ToString(). Substring (début, fin) – earlcasper

0

Vous devez utiliser une fonction spéciale de l'objet éditable:

Editable txt = et.getText(); 
txt.replace(int st, int en, CharSequence source) 

Cette commande remplace la partie spécifiée par (st..en) avec la chaîne (CharSequence).

0

vous n'avez pas besoin de faire tout cela, juste le temps presse sur le texte d'édition il vous montrera toutes les options pertinentes à copier/coller/Sélectionnez etc. Si vous souhaitez enregistrer le texte, utilisez la méthode indiquée par mbaird

0

Chaîne selectedText = et.getText(). ToString(). Substring (startSelection, endSelection);
getText() renvoie un objet modifiable. La sous-chaîne a besoin d'une chaîne. toString() les connecte correctement.

0

Vous pouvez le faire de cette façon d'obtenir le texte sélectionné EditText:

EditText editText = (EditText) findViewById(R.id.editText3); 
int min = 0; 
int max = editText.getText().length(); 
if (editText.isFocused()) { 
    final int selStart = editText.getSelectionStart(); 
    final int selEnd = editText.getSelectionEnd(); 
    min = Math.max(0, Math.min(selStart, selEnd)); 
    max = Math.max(0, Math.max(selStart, selEnd)); 
} 
// here is your selected text 
final CharSequence selectedText = editText.getText().subSequence(min, max); 
String text = selectedText.toString();