没有值的SharedPreferences

时间:2014-06-25 15:59:59

标签: android xml 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错误,我已经重新启动了我的计算机,现在它正常运行......感谢所有人。

3 个答案:

答案 0 :(得分:0)

试试这个

更改

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

到此

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

答案 1 :(得分:0)

您的“put / commit”代码对我来说是正确的。

然而,getAll存在一些陷阱:

How to iterate through all keys of shared preferences?

我建议你尝试检索一个单独的值(例如使用getBoolean或getString)来确定这是否是问题。

答案 2 :(得分: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");