2016-11-11 18 views
0

为了格式的字符串,我总是用String.format(getString(R.string.something),arg1)的String.format或的getString

但是我看到的文档getString(string, args)上能做到这一点。

因此,我不知道为什么大家都用的String.format如果的getString可以做同样的

谢谢

+0

答案是肯定的。在这里看到最有价值的ansewr。 http://stackoverflow.com/questions/12627457/format-statement-in-a-string-resource-file – Doomsknight

+0

@Doomsknight,问题是'为什么?'。答案不能是'Yes' –

+1

@VladMatvienko错误的措辞抱歉。我的意思是他们是一样的,除了一个更直接。并不是每个人都知道更好的方法,并且根据相关答案,您可以看到接受的答案表示一种方法,最高的答案表示第二种方法。所以它更多的是人们遇到的东西。我也不总是以最佳方式编程。在某些编码方式已经记录之后,还会在以后推出一些API。 – Doomsknight

回答

2

你们错了,有没有方法Resources.getString(string, args...)Context.getString(string, args...)。有Resources.getString(int, args...)需要一个int和对象。

格式化字符串时,您可以使用String.format(string, args...)。但在Android中,您的字符串资源可能位于res文件夹中,因此您可以使用便利的方法从资源中获取字符串并将其格式化为String.format。它为你做同样的事情(taken from Android source):

@NonNull 
public String getString(@StringRes int id, Object... formatArgs) throws NotFoundException { 
    final String raw = getString(id); 
    return String.format(mResourcesImpl.getConfiguration().getLocales().get(0), raw, 
      formatArgs); 
} 

你会用它喜欢:

getString(R.string.something, arg1) 

,并保存自己一些打字。

+1

对不起,是的,你是对的。我第一次误解了你的答案,因为它是用一种相当复杂的语言写成的。 –

+1

我假设他的问题实际上是指'Resources.getString(int,args ...)'而且它的目的更多是为了他们为什么使用一种方法 – Doomsknight