我刚开始使用Delphi XE5开发Android开发路径,并且正在尝试构建一个需要能够保留一些输入信息(配置)的简单应用程序。
我已经想到,Android类SharedPreferences可能是最简单的方法,但是我无法弄清楚如何从Delphi XE5 FMX Mobile访问这个类。
我尝试在帮助中搜索“SharedPreferences”,但它什么也没有返回。另一方面,搜索“共享偏好”给了我太多。
答案 0 :(得分:17)
简而言之,将所需的API单元添加到uses子句中 - 您的案例中的关键单元是AndroidApi.Jni.JavaTypes
,AndroidApi.Jni.App
和AndroidApi.Jni.GraphicsContentViewText
,以及FMX.Helpers.Android
对于一些胶水代码 - 并且它就像在Java中一样调用它。 Java类作为具有初始J的接口类型公开;实际上,Android API使用嵌套类很多,而且由于Delphi不支持嵌套接口类型,因此它们变为ParentClassName_ChildClassName:
var
Prefs: JSharedPreferences;
Editor: JSharedPreferences_Editor;
I: Integer;
F: Single;
S: string;
begin
Prefs := SharedActivity.getPreferences(TJActivity.JavaClass.MODE_PRIVATE);
Editor := Prefs.edit;
Editor.putInt(StringToJString('MyIntKey'), 999);
Editor.putFloat(StringToJString('MyFloatKey'), 123.456);
Editor.putString(StringToJString('MyStrKey'), StringToJString('This is a test'));
Editor.apply;
I := Prefs.getInt(StringToJString('MyIntKey'), 0);
F := Prefs.getFloat(StringToJString('MyFloatKey'), 0);
S := Prefs.getString(StringToJString('MyIntKey'), StringToJString(''));
那就是说,我最近推出了一个包含TCustomIniFile
API的简单SharedPreferences
后代 - 请点击此处获取信息:
http://delphihaven.wordpress.com/2013/09/12/a-few-xe5-related-bits/
在将API映射到TCustomIniFile
时,我发现的一个小问题是SharedPreferences
键是强类型的,并且似乎没有办法提前找出什么类型的给定键具有(TCustomIniFile
中的键,相反,键入弱)。因此,为了阅读,我使用getAll
方法将所有键和值作为Map
/ JMap
(换言之,Java字典对象)进行检索,并从那里读取单个键。