Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在SharedReferences中保存字体?_Android_Sharedpreferences - Fatal编程技术网

Android 如何在SharedReferences中保存字体?

Android 如何在SharedReferences中保存字体?,android,sharedpreferences,Android,Sharedpreferences,我正在尝试在SharedReferences中保存字体。但我无法实现,请帮助我。谢谢 这是我的密码 阅读 SharedPreferences fontSP = getActivity().getSharedPreferences("PREFSFONT", Context.MODE_WORLD_READABLE); m_txTitle.setTypeface(fontSP.getString("fontValue", SettingsABC.getTypeface(fontStyle));

我正在尝试在SharedReferences中保存字体。但我无法实现,请帮助我。谢谢 这是我的密码

阅读

SharedPreferences fontSP = getActivity().getSharedPreferences("PREFSFONT", Context.MODE_WORLD_READABLE);


m_txTitle.setTypeface(fontSP.getString("fontValue", SettingsABC.getTypeface(fontStyle));
拯救

fontStyle = Typeface.createFromAsset(getAssets(), "caligula.ttf");
                    SharedPreferences fontSP = getSharedPreferences("PREFSFONT", MODE_WORLD_READABLE);
                    SharedPreferences.Editor bgEditor = fontSP.edit();
                    bgEditor.putString("fontValue", fontStyle.toString());
                    bgEditor.commit();

您正在将字体对象的
toString()
保存到首选项中,然后尝试使用它来恢复该值,我敢肯定这是行不通的
toString()
不是序列化机制

相反,您应该编写文件名并使用该文件名进行恢复

bgEditor.putString("fontValue", "caligula.ttf"); //Use the filename here
然后恢复:

fontStyle = Typeface.createFromAsset(getAssets(), fontSP.getString("fontValue", SettingsABC.getTypeface(fontStyle));
m_txTitle.setTypeface(fontStyle);

或者类似的东西。

从bgEditor.putString(string,string)开始,我就把它添加到string()中。下面的说法也是错误的。fontStyle=Typeface.createFromAsset(getAssets(),fontSP.getString(“fontValue”,SettingsABC.getTypeface(fontStyle));但您不想读取字体,而是想从文件中读取。不幸的是,Typeface.createFromAsset会造成内存泄漏:。那么是否有办法保存字体,而不仅仅是文件名?