要引用的應用程序的項目中的strings.xml串FOO(在res \值),一個可以簡單地使用如何在代碼中引用Android庫的strings.xml中的字符串?
getString(R.string.foo)
的getString是背景信息的方法。
假設Android庫在其strings.xml中包含字符串foo。它如何用於圖書館的一種方法?
被修改: 已經建議將上下文的引用傳遞給庫方法,因此可以使用getString()。由於它是應用程序項目的上下文,因此存在以下潛在衝突:
假設: 庫的值爲字符串foo,值爲「庫foo」。 應用程式項目具有值= 「應用foo」 的
以下代碼
Log.d("Debug", "App foo ID: " + R.string.foo);
Log.d("Debug", "App: foo value: " + getString(R.string.foo));
生成一個字符串FOO:
03-22 05:53:55.590: D/Debug(16719): App foo ID: 2131230723
03-22 05:53:55.590: D/Debug(16719): App foo value: app foo
在文庫法,下面的代碼
Log.d("Debug", "Library foo ID: " + R.string.foo);
Log.d("Debug", "Library foo value: " + context.getString(com.my.library.R.string.foo));
生成:
03-22 05:55:03.680: D/Debug(16719): Library foo ID: 2131230723
03-22 05:55:03.680: D/Debug(16719): Library foo value: app foo
上面顯示ID衝突,因此錯誤的字符串值。
的方法不具有上下文參考,如何能的getString()可以使用? – Hong 2013-03-21 21:06:31
唯一的方法是與上下文。通常我只是設置我的方法來接受來自調用應用程序的上下文。 – DDRBoxman 2013-03-21 21:12:13
您必須將'Context'參數傳遞給您的方法。請注意,'View'有一個'getContext()'方法,如果你已經有了這個類型的參數 – nicopico 2013-03-21 21:15:10