1

HTML を使用して (TextView で) 出力をフォーマットしようとしています。古い出力から HTML 形式のテキストを取得し、その 1 行上に新しいテキストを追加する必要があります。

String previous = Html.toHtml((Spanned) chatOutput.getText());
chatOutput.setText(Html.fromHtml(message + "<br>" + previous));

これはコンパイルされますが、実行時に toHtml() メソッドで java.lang.ClassCastException: java.lang.String が発生します。toHtml() メソッドをそのように使用できると示唆する人を何人か見ましたが、何かが足りないのかもしれません。

4

3 に答える 3

0
TextView chatOutput = (TextView) findViewById(R.id.textView4);
chatOutput.setText("", BufferType.SPANNABLE);

void updateChatOutput {
    String previous = Html.toHtml((Spannable) chatOutput.getText());
    if (!previous.equals("")) {
        if (previous.substring(0, 13).equals("<p dir=\"ltr\">"))
            previous = previous.substring(13, previous.length()-3); //remove <p dir="ltr"> and </p>
        else
            previous = previous.substring(3, previous.length()-3); //remove <p> and </p>
    }
    chatOutput.setText(Html.fromHtml(message.substring(2, message.length()) + "<br>" +  previous));
}

理解した。キャストを Spannable に変更し、BufferType.SPANNABLE で setText メソッドを使用すると、元の問題が解決しました。

その後、フォローアップの問題が発生し、テキストビューで奇妙な改行が発生しました。このプロセスのどこかに html-paragraph コードが追加されたことが判明しました。手動で削除すると、以下の醜い解決策になります。API 8 のテスト デバイスと比較して、API 18 のデバイスによって段落ステートメントの追加パラメーターが追加されていることに気付いたとき、ソリューションはさらに厄介になりました。

于 2014-01-09T04:00:10.743 に答える