我刚刚开始使用 Delphi XE5 进行 Android 开发,并尝试构建一个简单的应用程序,该应用程序需要能够保留一些输入的信息(配置)。
我已经弄清楚了,Android 类共享首选项可能是最简单的方法,但我不知道如何从 Delphi XE5 FMX Mobile 访问此类。
我尝试在帮助中搜索“SharedPreferences”,但它什么也没返回。另一方面,搜索“共享首选项”给了我太多的信息。
简而言之,将所需的 API 单元添加到 use 子句中 - 您的案例中的关键是AndroidApi.Jni.JavaTypes
, AndroidApi.Jni.App
, and 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
包裹的后代SharedPreferences
API - 请参阅此处了解信息:
http://delphihaven.wordpress.com/2013/09/12/a-few-xe5-lated-bits/
在将 API 映射到TCustomIniFile
,我发现的一个小问题是事实SharedPreferences
键是强类型的,并且似乎没有办法提前找出给定键的类型(键在TCustomIniFile
,相反,是弱类型)。因此,为了阅读,我使用getAll
方法检索所有键和值作为Map
/JMap
(换句话说,Java 字典对象)并从那里读取各个键。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)