не может установить интервал с более чем 1 словом - PullRequest
0 голосов
/ 19 июня 2019

Это мой первый раз с 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 были кликабельными, но я верю, что только одно из них (и я даже не уверен в этом)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...