gpt4 book ai didi

android - 从 Delphi 访问 Android 的 SharedPreferences 类

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:37:06 28 4
gpt4 key购买 nike

我刚刚开始使用 Delphi XE5 进行 Android 开发,正在尝试构建一个需要能够保留一些输入信息(配置)的简单应用程序。

我发现,Android 类 SharedPreferences可能是执行此操作的最简单方法,但我不知道如何从 Delphi XE5 FMX Mobile 访问此类。

我尝试在帮助中搜索“SharedPreferences”,但没有返回任何结果。另一方面,搜索“共享首选项”给了我太多。

最佳答案

简而言之,将所需的 API 单元添加到 uses 子句中 - 您的案例中的关键单元是 AndroidApi.Jni.JavaTypesAndroidApi.Jni.App、和 AndroidApi.Jni.GraphicsContentViewText,以及用于一些粘合代码的 FMX.Helpers.Android - 并且可以像在 Java 中一样调用它。 Java 类作为带有初始 J 的接口(interface)类型公开;在实践中,Android API 大量使用嵌套类,由于 Delphi 不支持嵌套接口(interface)类型,因此这些成为 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-related-bits/

在将 API 映射到 TCustomIniFile 时,我发现一个小问题是 SharedPreferences 键是强类型的,而且似乎没有办法找到提前找出给定键的类型(TCustomIniFile 中的键,相比之下,是弱类型的)。因此,为了阅读,我使用 getAll 方法将所有键和值检索为 Map/JMap(其他语言中的 Java 字典对象)单词)并从那里读取各个键。

关于android - 从 Delphi 访问 Android 的 SharedPreferences 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18799540/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com