FMX SharedPreferences

时间:2015-10-18 19:58:05

标签: android delphi

在我的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;

非常感谢。

2 个答案:

答案 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);

就是这样。