guyskk
guyskk
  • 发布:2015-05-17 01:03
  • 更新:2015-05-20 14:11
  • 阅读:6524

Native.js中plus.android.invoke总是返回null

分类:Native.js

我在做一个app要保存用户登录信息,写了下面两个方法,savePref没有异常,但是getPref总是返回null,
调试发现plus.android.invoke(setting, "getString", key);这句总是返回null。
另外:

  1. 直接用setting.edit(),editor.putString(),setting.getString()都会报错,提示这些方法不存在。
  2. getPref里面的 var str = plus.android.invoke(setting, "getString", key);这行
    如果改成var str = plus.android.invoke(setting, "getString", key,"");
    会报Uncaught SyntaxError: Unexpected identifier,不知道什么原因

设备信息:手机红米note,android4.4,电脑win8.1,浏览器chrome

function savePref(key, data) {
var str = JSON.stringify(data);
var Main = plus.android.runtimeMainActivity();
var Pref = plus.android.importClass("android.content.SharedPreferences");
var Editor = plus.android.importClass("android.content.SharedPreferences.Editor");
var setting = Main.getSharedPreferences(key, Main.MODE_PRIVATE | Main.MODE_APPEND)
var editor = plus.android.invoke(setting, "edit");
plus.android.invoke(editor, "putString", key, str);
plus.android.invoke(editor, "commit");
}

function getPref(key) {
var Main = plus.android.runtimeMainActivity();
var Pref = plus.android.importClass("android.content.SharedPreferences");
var p = new Pref();
var setting = Main.getSharedPreferences(key, Main.MODE_PRIVATE)

var str = plus.android.invoke(setting, "getString", key);  
if (str == null || str == "") {  
    return null;  
} else {  
    return JSON.parse(str);  
}  

}

2015-05-17 01:03 负责人:无 分享
已邀请:
DCloud_Android_ST

DCloud_Android_ST

少了一个参数导致为空的 getString(key,defaultl);
defaultl:如果为空或不存在需要返回的默认值
var str = plus.android.invoke(setting, "getString", key,"");

还有一些无用代码去掉吧
var Editor = plus.android.importClass("android.content.SharedPreferences.Editor");
var p = new Pref();

该问题目前已经被锁定, 无法添加新回复