2016-09-30 148 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)); –

相关问题