2016-09-30 114 views
1

我具有其中我存儲共享偏愛某些值的應用程序,但是當我檢查代碼那麼它給如何解決Android中的SharedPreference錯誤?

SharedPreferences.edit()沒有相應的commit()或應用() 呼叫。

如何解決此警告。

共享偏好,我使用下述代碼: -

private SharedPreferences m_Preference; 
private SharedPreferences.Editor m_Editor; 

m_Preference = context.getSharedPreferences(CStaticVar.DEAL_DOWNLOADED,Context.MODE_PRIVATE); 
m_Editor = m_Preference.edit(); 
        m_Editor.putInt("dealDonloadedcount",0); 
        m_Editor.apply(); 
+0

你正在使用哪個android版本?您發佈的提醒是錯誤還是提醒? –

回答

0

爲了更改,你需要調用

commit() 

方法共享偏好。

例(在Android官方文檔)

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPref.edit(); 
editor.putInt(getString(R.string.saved_high_score), newHighScore); 
editor.commit(); 

更多的Android正式文件:​​

+0

但我使用apply() – Rakesh

+0

@Rakesh mybe這僅僅是來自Lint的警告?您是否嘗試刷新項目並清理Lint錯誤並重新構建它? – Rafal

+0

由於'commit()'方法需要時間進行更改,因此可以使用apply()爲** Shared Preferences **進行即時保存。 –

-1

,因爲如果你在共享的喜好改變你應該commit()或適用於()。 否則沒有這個意思。用於消除該特定線上黃色標記的警告並禁用檢查。

+0

我不明白你想解釋 – Rakesh

+0

多一點.... – Rakesh

+0

它看起來像意外 – Rakesh

-1

使用

editor.commit(); 

代替

editor.apply(); 
0

創建一個類PreferencesHelper.java

public class PreferencesHelper { 

    private SharedPreferences sharedPreferences; 
    private SharedPreferences.Editor editor; 

    public PreferencesHelper(Context context) { 
     this.sharedPreferences = context.getSharedPreferences("MyPreference", 0); 
     this.editor = sharedPreferences.edit(); 
    } 

    public String GetPreferences(String key) { 
     return sharedPreferences.getString(key, ""); 
    } 

    public void SavePreferences(String key, String value) { 
     editor.putString(key, value); 
     editor.commit(); 
    } 
} 

然後你就可以在你的活動使用下面的代碼

PreferencesHelper pref = new PreferencesHelper(YourActivity.this); 
//To Save Preferences 
pref.SavePreferences("key",value); 
//To Get Preferences 
pref.GetPreferences("key"); 
+0

,如果要存儲int值並獲取int值 – Rakesh

+0

@Rakesh pref.SavePreferences(「key」,String.valueOf(int value)); –

相關問題