为什么在stringsViews中使用strings.xml是个好习惯?

时间:2018-03-02 18:15:03

标签: java android android-studio

我有

aTextView.setText("Days\n" + getClassDays());

但是,我听说使用strings.xml是正确的方法。但如果是这样,这就是我找到最佳方式的方法

strings.xml

<string name="course_days"><b>Days\n</b>%1$s</string>

MyActivity

aTextView.setText(String.format(_context.getString(R.string.course_days), getClassDays()));

正如你所看到的那样,这是漫长而丑陋的。我错过了一个更简单的解决方案吗?

3 个答案:

答案 0 :(得分:3)

使用string.xml时有很多原因......

  1. 避免重复: 为了拥有一个结构良好的应用程序,你需要不为不同的屏幕重用字符串,想象你有5个屏幕,每个人需要出现一个祝酒词“正在加载...”,然后你决定将它改为“请等待。 ..“所以你需要迭代所有5个toast进行更改,但是如果你 string.xml 那么一旦使用倍数它将会改变:D! <string name="loading_toast">Please wait...</string>
  2. 本地化:您永远不知道您的应用程序可能支持哪种语言,因此您将使用string.xml来存储俄语等复杂的单词。想象您的java文件中有数十个字符串像这样的“Приветмир”,意思是“Hello World!”那么你有时会感到困惑(正如我的经验所做的那样:D)
  3. 分离:如果您正在处理包含数千行代码的大型项目,那么您可能会编写一些错误的文本,并且如果您使用字符串,您的客户端会要求更正其中的一些.xml然后你可以指定每个屏幕的前缀,它将使修改和重构过程变得容易这里是一个例子:

    <!--Log in screen start --> <string name="login_screen_welcome_message">Welcome</string> <string name="login_screen_log_in_button">Log In</string> <!--Log in screen end --> <!--Home screen start--> <string name="home_screen_greeting_message">Hi there !</string> <--Home screen end-->

  4. 快乐编码

答案 1 :(得分:2)

当您需要本地化您的应用时,它会让您的生活更轻松。您只需要更改strings.xml文件,所有应用程序都将使用其他语言。此外,它是一种更有条理的方式来保持你的字符串,如果你需要更改其中一个,你只能去一个地方。例如,如果您在多个活动中拥有相同的字符串并且想要更改它,则会在strings.xml广告中更改一次,这将在整个活动中反映出来。更多信息here

答案 2 :(得分:0)

在字符串资源中添加粗体标签是什么意思?

在string.xml中只需<string name="course_days">Days\n %d</string>%d for int),aTextView.setText(_context.getString(R.string.course_days), getClassDays()));就可以了。

请注意,如果您在活动或片段中设置textView的值,那么它将只是aTextView.setText(getString(R.string.course_days), getClassDays()));