2017-01-30 33 views
2

在试图理解this answer时,我无法理解StringBuilderEditable之间的区别。该图像(减去手绘的红色圆圈)来自该答案。Android StringBuilder vs可编辑

enter image description here

他们都有方法appenddeleteinsertreplace文本。我看到StringBuilder是一个实际类,而Editable是一个接口。但是我可以从TextView得到一个EditabletextView.getEditableText(),如果它是一个接口,这看起来很奇怪。幕后的具体实施是什么?我也看到,Editable可以有跨度,而StringBuilder不可以。

我觉得我接近了解差异,但我可以多用一点解释。我很惊讶,我无法找到这个问题已经被问到,所以我现在问。

再次,具体为:

  • 是什么StringBuilderEditable之间的区别?
  • 什么时候应该使用一个而不是另一个?
+1

可编辑可以举行这样的HTML标记。 StringBuilder仅保存纯文本。你是什​​么意思?*如果它是一个界面,这看起来很奇怪*? – Blackbelt

+0

我从'TextView'回来的对象实际上是一个'SpannableStringBuilder'吗?如果是这样,如果我写'SpannableStringBuilder myString = textView.getEditableText();'为什么我会得到一个不兼容的类型错误?@Blackbelt – Suragch

+0

我的问题可能会演变成:'SpannableStringBuilder'和'Editable'有什么区别? – Suragch

回答

1

StringBuilder和Editable有什么区别?

Editable可以保留加价这样的htmlStringBuilder只保存纯文本。

但我可以得到一个可编辑从 textView.getEditableText(),这似乎很奇怪,如果它是一个接口一个TextView回来。 背后的具体实现是什么?

这并不奇怪。它返回一个Editable,具体实现取决于你如何设置文本。

是我从TextView回来的对象实际上是一个 SpannableStringBuilder?如果是这样,为什么我得到一个不兼容的类型 错误,如果我写SpannableStringBuilder myString = textView.getEditableText();

它可能或可能不是。你知道这是一个可编辑的。 A SpannableStringBuilderEditable,但Editable不是SpannableStringBuilder,这就是为什么除非您投下​​它,否则无法将返回值getEditableText指定为SpannableStringBuilder。我