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

问题描述 投票:1回答:4

我有

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()));

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

java android android-studio
4个回答
3
投票

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

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

快乐的编码


2
投票

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


0
投票

什么是在字符串资源中添加粗体标签的重点?

只需在你的string.xml和<string name="course_days">Days\n %d</string>中使用%daTextView.setText(_context.getString(R.string.course_days), getClassDays())); for int)就行了。

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


0
投票

使用黄油刀库

@BindString(R.string.course_days)
String courseDays;

在onCreate

Butterknife.bind(this);
© www.soinside.com 2019 - 2024. All rights reserved.