在我的Android应用程序中,使用Delphi 10 Seattle构建我想访问SharedPreferences。
在Android 4.3手机上运行我的应用时,共享首选项效果很好。
但是当在Android 5.1.1手机上运行这个相同的应用程序时,我的应用程序将无法启动
有人有解决这个问题的线索吗?
使用下面的代码管道:
uses
AndroidApi.Jni.JavaTypes, AndroidApi.Jni.App, AndroidApi.Jni.GraphicsContentViewText, FMX.Helpers ;
{Public declarations }
Prefs : JSharedPreferences;
Editor: JSharedPreferences_Editor;
在FormCreate中:
Prefs := TAndroidHelper.Activity.getPreferences(TJActivity.JavaClass.MODE_PRIVATE);
Portfolio := Prefs.getInt(StringToJString('Portfolio'), 1);
EditSize.Text := IntToStr(Portfolio) ;
在FormClose中:
Editor := Prefs.edit;
Editor.putInt(StringToJString('Portfolio'), StrToInt(EditSize.Text));
Editor.apply;
非常感谢。
答案 0 :(得分:0)
首先,这甚至不会在调试器中显示,所以甚至不用费心去尝试。
有这个确切的问题,它正在驱使我努力!!!!
这是我要解决的问题。不要声明编辑。
这是我的READ代码:
var
Prefs : JSharedPreferences;
s: string;
begin
prefs := SharedActivity.getSharedPreferences(StringToJString('NCVPPP'), 0);
s := (JStringToString(prefs.getString(
StringToJString('Key'), StringToJString('0'))));
Registered := false;
这是我写的代码:
var
Prefs : JSharedPreferences;
//PrefsEditor: JSharedPreferences_Editor;
s: string;
begin
prefs := SharedActivity.getSharedPreferences(StringToJString('NCVPPP'), 0);
//PrefsEditor := prefs.edit;
Prefs.edit.putString(StringToJString('Key'), StringToJString(DeviceSerialNo));
Prefs.Edit.commit;
答案 1 :(得分:0)
答案是对的。 引发异常的是" TJActivity.JavaClass.MODE_PRIVATE" 如果你想让它工作你必须使用编辑器,所以要修复它只需写
Prefs := TAndroidHelper.Activity.getPreferences(0);
而不是
Prefs := TAndroidHelper.Activity.getPreferences(TJActivity.JavaClass.MODE_PRIVATE);
就是这样。