这是我第一次使用Java和Android Studio,因此,如果这是一个愚蠢的问题,我感到抱歉,我真的很想尝试解决这个问题。 我想让用户输入每个单词都可以点击(我试图给出一个图像,描述用户点击后每个单词的输入)。
我相信setSpan一次只处理一个单词(虽然我不确定),但是当该短语包含多个单词时,应用程序崩溃(例如“ java.lang.IndexOutOfBoundsException:setSpan(6。 .. 7)结束于长度1“)
public void processResult(String result_message) {
result_message = result_message.toLowerCase();
final TextView changingText = (TextView) findViewById(R.id.TextToChange);
changingText.setText(result_message);
final String s = result_message;
String[] arr = s.split(" ");
for (int i = 0; i < arr.length; i++) {
final String ss = arr[i];
Log.d("S", ss);
int startingPosition = s.indexOf(ss);
int endingPosition = startingPosition + ss.length();
Spannable str = new SpannableString(ss);
Log.d("points", "start position=" + startingPosition + " end position=" + endingPosition);
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(MainActivity.this, ss, Toast.LENGTH_SHORT).show();
}
};
str.setSpan(clickableSpan, startingPosition, endingPosition, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
changingText.setText(ss);
changingText.setMovementMethod(LinkMovementMethod.getInstance());
}
}
目标是使result_message的所有单词都可单击,但是我相信只有一个是(而且我对此还不确定)