我正在为我的 NativeScript 应用程序编写一个小型原生 android 插件,但有一部分我必须将几个字符串参数传递到 java 代码中,这令人惊讶地存在问题。事实证明,当我尝试通过 android 上下文调用需要任何其他内容的方法时,调用失败。
这是我调用该方法的 JS:
var application = require("application");
var context = application.android.context;
module.exports = {
startService: function(serviceName) {
var serviceInitializer = new service.fi.geolocationpollingservice.ServiceInitializer();
serviceInitializer.startService(context, serviceName, userToken, locationUrl);
}
};
这是实际的Java方法:
public class ServiceInitializer {
public void startService(Context context, String serviceName, String userToken, String backendUrl) {
Toast.makeText(context, "serviceName: " + serviceName + "; userToken: " + userToken + "; backendUrl: " + backendUrl, Toast.LENGTH_LONG).show();
}
}
我很确定serviceName,userToken和locationUrl是用适当的字符串值初始化的,但是当我尝试从我的应用程序执行该方法时,我收到以下错误:
Unhandled Exception
com.tns.nativeScriptException: Calling js method onCreateView
Reference Error: userToken is not defined
File: "/data/data/org.nativescript.forni/files/app/tns_modules/geo-polling-service-plugin/index.js, line 7, column 62"
如果您的代码与上面所示完全相同,则错误消息是正确的;我没有看到声明为userToken
的JS变量。