2017-02-12 49 views
0

我必須保存用戶ID。我想強制保存用戶ID在長期偏好類型。什麼問題是如果服務器分配我22作爲用戶ID是整數類型。我通過它來優先保存。它保存在putInt方法下,因爲數字的長度很短。如果我檢索它說,整數不能被施放長時間。下面是保存用戶標識的prefrence util類中的重載方法。強制一個變量爲'長'型總是

public int read(String valueKey, int valueDefault) { 
    return mPreferences.getInt(valueKey, valueDefault); 
} 

public void save(String valueKey, int value) { 
    mEditor.putInt(valueKey, value); 
    mEditor.commit(); 
} 

public long read(String valueKey, long valueDefault) { 
    return mPreferences.getLong(valueKey, valueDefault); 
} 

public void save(String valueKey, long value) { 
    mEditor.putLong(valueKey, value); 
    mEditor.commit(); 
} 

我想保存用戶ID並保存爲相同的長度。它所做的是,它預測用戶id是整數,因爲數字的長度可能並將其保存在put mEditor.putInt(valueKey,value);希望你明白挫敗感。我可以想到的可能的解決方案是,而不是將價值傳遞給這些方法。我只是用putLong方法顯式保存用戶標識..或者還有其他解決方案嗎?

+1

轉換爲長,或用文字符號'22L' – CollinD

+0

@Usman Ghauri使用以下內容:Long.valueOf(int);. –

+0

@CollinD和tushar:謝謝,但這可能會解決一個案例,但可能會導致int情況下的問題。保存和讀取是我用於其他int/long首選項的通用方法。所以這可能不是最好的解決方案 –

回答

0

您可以從服務器獲取int值(例如:22)並將其傳遞給save()方法。在那裏你可以輸入長時間並存儲到putLong方法中。下面是代碼:

public void save(String valueKey, int value) { 
    Long longVal = (long)value; 
    mEditor.putLong(valueKey, longVal); 
    mEditor.commit(); 
} 
+1

這不是最好的解決方案,因爲它會將所有其他int類型的優選項都投入長時間。 –

1

你可以使用枚舉,而不是純粹的String對象:

enum MyProperties{ 
    USER_ID{ 
    void save(long value, WhatEverTypeThisIs mEditor){ 
     mEditor.putLong(valueKey, longVal); 
     mEditor.commit(); 
    } 
    long get(WhatEverOtherTypeThisIs mPreferences){ 
     return mPreferences.getLong(name(), valueDefault); 
    } 
    }, 
    INT_PROPERTY{ 
    void save(long value, WhatEverTypeThisIs mEditor){ 
     mEditor.putInt(valueKey,(int) longVal); 
     mEditor.commit(); 
    } 
    //needs cast to int at caller side 
    long get(WhatEverOtherTypeThisIs mPreferences){ 
     return mPreferences.getInt(name(), valueDefault); 
    } 
}; 
abstract void save(long value, WhatEverTypeThisIs mEditor); 
abstract long get(WhatEverOtherTypeThisIs mPreferences); 
} 

用途:

MyProperties.USER_ID.save(22,mEditor); 
    long id22 = MyProperties.USER_ID.get(mPreferences); 
    MyProperties.INT_PROPERTY.save(23,mEditor); 
    int somValue23 = (int)MyProperties.INT_PROPERTY.get(mPreferences); 
+0

我認爲這是可能的解決方案。我會盡力與你聯繫 –

相關問題