2016-11-11 51 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