保留静态文本的最佳方式

时间:2017-02-17 18:34:41

标签: android text-formatting

我的应用使用了大量静态文本,并且我试图找到一种最佳方式来保留并显示该文本。目前,我并不需要专注于本地化文本,因此,所有文本都会进入strings.xml,这会带来很多格式化的噩梦。

当然,它不是100%的静态内容,我有时会在那里有动态值,在我的情况下可以保持在strings.xml内,那么,持久化静态文本的正确方法是什么?

3 个答案:

答案 0 :(得分:3)

静态文字内容正是您想要使用strings.xml的内容,并且您可以自动获得更轻松的本地化优势,因为您可以针对不同的语言使用不同的strings.xml。无需更改代码,只需更改不同的XML文件。

动态内容将根据用户输入而变化。您仍然可以使用strings.xml来存储该动态内容的静态部分(如果有)。喜欢"格式"字符串,您可以传递给String.format()或类似的东西。

使用资源支持,这正是它的目的(并且有效地做到了。)

答案 1 :(得分:2)

你的评论是矛盾的;你说:

  

目前,我不需要专注于本地化文本,所以所有文本都进入strings.xml

如果您不需要本地化,那么您为什么要使用strings.xml

当然,答案是因为无论本地化如何,strings.xml都是最佳选择。

我不知道你用它做了什么样的噩梦,但它与其他任何字符串没什么不同:

E.g。 of strings.xml:

<string name="refresh">Refresh</string>
<string name="order_placed" formatted="false">Order Placed: %s</string>

您稍后可以使用相同的格式化程序:

getString(R.string.order_placed, "3pm")

将输出:

Order Placed: 3pm

如果你需要换行......

<string name="error">Something bad happened.\nPlease try again.</string>

将输出:

Something bad happened.
Please try again.

等等。

此外,如果您无法命名您的资源,我已经或多或少地关注this idea,尽管底部描述的缺点,他们还没有与Android Studio花哨的重构工具一直很重要。

答案 2 :(得分:0)

您可以创建一个名为StaticBuffer的类或具有静态String数组作为数据成员的类。

class StaticBuffer
  { 
    static String array[]; 
  }

然后你可以在onCreate()或任何其他函数中初始化它并使用它。因为它是静态的,它的值将反映你在任何地方所做的更改。

例如:

//Initialization

StaticBuffer.array=new String[10];

//Usage

StaticBuffer.array[0]="Item1";
PS:我从我的一个朋友那里得到了这个想法。 :)