2014-06-25 81 views
0

那就是如何我保存值SharedPreferences:SharedPreferences沒有價值

private void GuardarConfiguracionEnXML() { 
     SharedPreferences prefs =getSharedPreferences("MisPreferencias",Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor = prefs.edit(); 

     editor.putBoolean("ConfirmarPromocion", VarGlobales.ConfirmarPromocion); 
     editor.putBoolean("NoPermitirCero", VarGlobales.NoPermitirCero); 
     editor.putBoolean("ProponerCantidad", VarGlobales.ProponerCantidad); 
     editor.putBoolean("ArticuloCodNum", VarGlobales.ArticuloCodNum); 
     editor.putBoolean("GuardarRutas", VarGlobales.GuardarRutas); 
     editor.putBoolean("IncluyeFabricante", VarGlobales.IncluyeFabricante); 
     editor.putBoolean("CompararComienzo", VarGlobales.CompararComienzo); 
     editor.putString("CadenaBusquedaArticulos", VarGlobales.CadenaBusquedaArticulos); 
     editor.putString("SerieConfiguracion", VarGlobales.SerieConfiguracion); 
     editor.putBoolean("MostrarPoblacion", VarGlobales.MostrarPoblacion); 
     editor.putBoolean("RecogidaEnvases", VarGlobales.Recogidaenvases); 
     editor.putBoolean("ConvertirACajas", VarGlobales.ConvertirACajas); 
     editor.putBoolean("RepartoFinSemana", VarGlobales.RepartoFinSemana); 
     if(VarGlobales.ModoBusArticulos == BuscarPorArticulo.CODIGO) 
      editor.putInt("BusquedaDefectoArticulos", 3); 
     else if(VarGlobales.ModoBusArticulos == BuscarPorArticulo.DESCRIPCIONC) 
      editor.putInt("BusquedaDefectoArticulos", 1); 
     else 
      editor.putInt("BusquedaDefectoArticulos", 2); 
     editor.putInt("DiasDiurno", VarGlobales.DiasDiurno); 
     editor.putInt("DiasNocturno", VarGlobales.DiasNocturno); 
     //editor.putBoolean("VentaSoloUnidades", VarGlobales.VentaSoloUnidades); 
     editor.commit(); 

     Map<String, ?> testshared = prefs.getAll(); 
    } 

testshared擁有所有的值,但是當我開始我的apk我得到0值:

SharedPreferences prefs = getSharedPreferences("MisPreferencias",Context.MODE_PRIVATE); 
     Map<String, ?> testshared2 = prefs.getAll(); 

testshared2是空的..爲什麼?

編輯:是一個Eclipse錯誤,我重新啓動了我的電腦,現在它的工作原理...感謝大家。

+0

你打電話GuardarConfiguracionEnXML當你在的onPause? – user3331142

+0

GuardarConfiguracionEnXML在OnClickListener中調用。 –

+0

這應該沒問題。 – user3331142

回答

0

試試這個

變化

SharedPreferences prefs =getSharedPreferences("MisPreferencias",Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = prefs.edit(); 

對此

SharedPreferences prefs =getSharedPreferences("MisPreferencias",Context.MODE_PRIVATE); 
Editor editor = prefs.edit(); 
+0

「前綴無法解析爲類型」,它不起作用。 –

+0

對不起。你實際上使用了我的代碼。你能提供更多的代碼來幫助解決上下文嗎? – user3331142

+0

是一個Eclipse錯誤,我重新啓動了我的電腦,現在它工作... –

0

你的 「看跌/提交」 代碼看起來正確的給我。

不過,也有一些缺陷與GETALL:

How to iterate through all keys of shared preferences?

我建議你嘗試獲取一個單獨的值(例如,使用getBoolean或的getString),以確定這是否是問題。

+0

我在調試時使用了getAll,我只是用它來知道哪些值有我的sharedpreferences文件。是一個Eclipse的錯誤,我重新啓動了我的電腦,現在它的工作... –

+0

我所做的一點是,getAll看起來懷疑,我的建議是使用getBoolean或getString。 – IanB

0

我使用基於我的活動的sharedPreferences。如果您不在活動或片段類中,可以使用「getApplicationContext()」,可以在片段類中使用「getActivity()」或在活動類中使用「this」。

爲了把數據:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); 
Editor prefsEditor = prefs.edit(); 
refsEditor.putString(Key1, Value1); 
refsEditor.putString(Key2, Value2); 
prefsEditor.commit(); 

檢索數據:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); 
String str = prefs.getString(Key1, "defValue");