IBM Worklight 6.1 - 回调中返回的数据(在WL.NativePage.show()中)未定义

时间:2014-01-08 23:55:06

标签: android ibm-mobilefirst

我正在尝试按照此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'});
};

2 个答案:

答案 0 :(得分:0)

我尝试了大部分代码(没有使用webclient部分),作为一个新项目,它可以工作。

您可以下载Worklight示例并对其进行测试吗?

最重要的是,本地页面是否为您加载,这意味着您是否已将活动添加到android-manifest.xml中?

你可以将你的eclipse项目上传到某个地方,这样我就可以看到它了,看错了什么。 这应该没有问题。

http://public.dhe.ibm.com/software/mobile-solutions/worklight/docs/v610/UsingNativePagesInHybridAppsProject.zip

答案 1 :(得分:0)

根据评论中的讨论:尝试将回调函数定义为函数而不是变量。

function backFromNativePage(data) { 
    ...
}