2013-02-25 36 views

回答

17

創建類在你的基地,包文件夾常數

(或創建一個接口而不是類,所以沒有必要引用該類每次,然而這是bad practice由於代碼的可讀性,但它會工作)

public static final值填充它。

而且,無論是class以及interface也可以聲明爲abstract

+1

好吧,但我怎麼可以改變它在「編譯時」?例如,我不想存儲三次所有值(針對3種不同的環境),並且僅在需要時纔對所有值進行評論。 – klefevre 2013-02-25 12:57:24

+0

有3種不同的環境,你的意思是項目?然後創建一個庫應用程序,在該應用程序中創建常量類,然後將其作爲庫添加到多個項目中。 – Nickolaus 2013-02-25 13:00:28

+2

不,我的意思是3個環境,例如一個項目的debug,preprod或prod。例如,我想改變我的web服務API'http://prepod.xxx.com/ws','http://www.xxx'的基本URL(就像我在我的問題中引用的答案一樣)。 COM/WS',‘http://192.168.1.42/ws’只有1常數改變,如‘調試’,‘PREPROD’,‘PROD’ – klefevre 2013-02-25 13:07:22

2

如果您常量的值取決於環境(密度,區域等等),那麼你應該使用資源來保存它們(整數,字符串,捫等)。在另一種情況下,您可以將您的全局常量放在一個文件中(最佳實踐 - 爲每組常量使用前綴),或將相關類中的本地常量(例如,Intent保存標誌,額外值,類別等) 。

+0

你能告訴我一個片段來說明你的答案PLZ? – klefevre 2013-02-25 13:09:24

+0

正如我理解你的評論上面你應該使用Maven(自動化建設工具)。您可以爲不同的配置確定不同的常量,Maven將爲您製作不同的apk(每個apk使用一組常量)。看到這個問題的詳細信息http://stackoverflow.com/questions/13867148/maven-and-android-slightly-different-builds-for-different-environments – tundundun 2013-02-25 13:38:53

2

使用public static final values.並將其保存在單獨的Java文件,如下所示:

static String QC = "http:/************"; 
    static String DEV = "http:/************"; 
    static String CLOUD = "http:/************"; 


    static String SERVICEURL = CLOUD ; //Use this SERVICEURL in your code at run time 
2

另一種解決辦法可能是使用的資源文件(如果你滿足於僅存儲字符串值)。

這可以用來存儲常量比如,這個應用程序管理帳戶:

例。 WelcomeActivity.java

AccountManager am = AccountManager.get(WelcomeActivity.this); 
Account account = am.getAccountsByType(getResources().getString(R.string.ACCOUNT_TYPE))[0]; 

Ex。 RES /價值/ strings.xml中

<resources> 
    <string name="ACCOUNT_NAME">com.acme.MyAccountSignature</string> 
</resources> 

這也讓您修改,而無需重新編譯(類似如何你通常會脫鉤的翻譯,其中的strings.xml文件最適合使用)。

相關問題