我的应用使用了大量静态文本,并且我试图找到一种最佳方式来保留并显示该文本。目前,我并不需要专注于本地化文本,因此,所有文本都会进入strings.xml
,这会带来很多格式化的噩梦。
当然,它不是100%的静态内容,我有时会在那里有动态值,在我的情况下可以保持在strings.xml
内,那么,持久化静态文本的正确方法是什么?
答案 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:我从我的一个朋友那里得到了这个想法。 :)