我正在尝试按照此Worklight Tutorial中的示例,从本机页面发回数据。但是,当它从本机页面返回时,回调函数(data
)中的参数(backFromNativePage(data)
)是未定义的。我刚开始使用Worklight,所以也许我没有正确地做到这一点?我希望有人可以说明我可能做错了什么。谢谢!
以下是我的一些代码:
Login.java:
public class Login extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LoginWebViewClient client = new LoginWebViewClient(this);
webView = (WebView) findViewById(R.id.login);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(client);
webView.loadUrl(url);
}
public void setAppDataAndReturn(HashMap<String, String> dataList) {
Intent returnData = new Intent();
for (Map.Entry<String, String> item : dataList.entrySet()) {
returnData.putExtra(item.getKey(), item.getValue());
}
setResult(RESULT_OK, returnData);
finish();
}
}
LoginWebViewClient:
public class LoginWebViewClient extends WebViewClient {
private Login webAct;
private HashMap<String, String> dataList;
public LoginWebViewClient(Login webAct) {
this.webAct = webAct;
}
@Override
public void onPageFinished(WebView view, String url) {
this.dataList = getData(); //returns a HashMap
webAct.setAppDataAndReturn(dataList);
}
AppInit.js:
var backFromNativePage = function(data) {
WL.Logger.error("backFromNativeLoginPage: data= "+ data);
};
var showNativePage = function() {
WL.NativePage.show('com.app.Login', backFromNativePage, {param: 'some value'});
};
顺便说一下,我正在使用Worklight版本6.1.0.00-20131219-1900,我正在使用Android 4.3手机进行测试。
非常感谢任何帮助!
修改
根据@IdanAdar的建议,这是我改变它以使其工作的方式:
AppInit.js:
var showNativePage = function() {
WL.NativePage.show('com.app.Login', function(data) {
WL.Logger.error("backFromNativeLoginPage: data= "+ data);
}, {param: 'some value'});
};
答案 0 :(得分:0)
我尝试了大部分代码(没有使用webclient部分),作为一个新项目,它可以工作。
您可以下载Worklight示例并对其进行测试吗?
最重要的是,本地页面是否为您加载,这意味着您是否已将活动添加到android-manifest.xml中?
你可以将你的eclipse项目上传到某个地方,这样我就可以看到它了,看错了什么。 这应该没有问题。
答案 1 :(得分:0)
根据评论中的讨论:尝试将回调函数定义为函数而不是变量。
function backFromNativePage(data) {
...
}