【问题标题】:Android StringBuilder vs EditableAndroid StringBuilder vs 可编辑
【发布时间】:2017-01-30 10:15:24
【问题描述】:

在尝试理解this answer 时,我无法理解StringBuilderEditable 之间的区别。这张图片(减去手绘的红色圆圈)来自那个答案。

它们都有appenddeleteinsertreplace 文本的方法。我看到StringBuilder 是一个实际的类,而Editable 是一个接口。但是我可以从带有textView.getEditableText()TextView 返回Editable,如果它是一个接口,这似乎很奇怪。幕后的具体实现是什么?我还看到Editable 可以有跨度,而StringBuilder 没有。

我想我已经接近理解其中的区别了,但我可以再解释一下。我很惊讶我找不到这个问题已经被问到了,所以我现在问它。

再次,特别是:

  • StringBuilderEditable 有什么区别?
  • 我应该在什么时候使用一个而不是另一个?

【问题讨论】:

  • Editable 可以保存标记,例如 html。 StringBuilder 只保存纯文本。 如果它是一个界面,这似乎很奇怪是什么意思?
  • 我从TextView返回的对象实际上是SpannableStringBuilder吗?如果是这样,如果我写SpannableStringBuilder myString = textView.getEditableText();,为什么会出现类型不兼容的错误? @黑带
  • 我的问题可能会演变成:SpannableStringBuilderEditable 有什么区别?
  • SpannableStringBuilderEditable,但Editable 不是SpannableStringBuilder。前者是具体的,后者是抽象的。您不能将 getEditableText 分配给 SpannableStringBuilder,除非您将其向下转换。 我从 TextView 返回的对象实际上是 SpannableStringBuilder,它可能是也可能不是。
  • @Blackbelt。好的,我认为现在一切都说得通了。随意让您的 cmets 成为答案。

标签: android stringbuilder android-editable


【解决方案1】:

StringBuilder 和 Editable 有什么区别?

Editable 可以保存诸如html 之类的标记。 StringBuilder 仅包含纯文本。

但我可以从 TextView 中获取 Editable textView.getEditableText(),如果是接口的话就显得奇怪了。 幕后的具体实现是什么?

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

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

可能是,也可能不是。你所知道的是这是一个可编辑的。 SpannableStringBuilderEditable,但 Editable 不是 SpannableStringBuilder,这就是为什么你不能将 getEditableText 的返回值分配给 SpannableStringBuilder,除非你向下转换它。我

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-16
    • 2011-05-29
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    相关资源
    最近更新 更多