我刚刚开始使用 Delphi XE5 进行 Android 开发,并且正在尝试构建一个简单的应用程序,该应用程序需要能够保留一些输入的信息(配置)。
我发现,Android 类SharedPreferences可能是最简单的方法,但我不知道如何从 Delphi XE5 FMX Mobile 访问这个类。
我曾尝试在帮助中搜索“SharedPreferences”,但它什么也没返回。另一方面,搜索“共享首选项”给了我太多。
我刚刚开始使用 Delphi XE5 进行 Android 开发,并且正在尝试构建一个简单的应用程序,该应用程序需要能够保留一些输入的信息(配置)。
我发现,Android 类SharedPreferences可能是最简单的方法,但我不知道如何从 Delphi XE5 FMX Mobile 访问这个类。
我曾尝试在帮助中搜索“SharedPreferences”,但它什么也没返回。另一方面,搜索“共享首选项”给了我太多。
简而言之,将所需的 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(''));
也就是说,我最近推出了一个包装API的简单TCustomIniFile
后代- 请参阅此处了解信息:SharedPreferences
http://delphihaven.wordpress.com/2013/09/12/a-few-xe5-related-bits/
在将 API 映射到 时TCustomIniFile
,我发现一个小问题是SharedPreferences
键是强类型的,并且似乎没有办法提前找出给定键的类型(TCustomIniFile
相反,键是弱类型)。因此,为了阅读,我使用该getAll
方法将所有键和值作为Map
/ JMap
(换句话说,Java 字典对象)检索并从那里读取单个键。