IBM Worklight 6.1 - コールバックで返されたデータ(wl.nativepage.show())は未定義です

StackOverflow https://stackoverflow.com//questions/21009089

  •  21-12-2019
  •  | 
  •  

質問

この Worklightチュートリアルをネイティブページから返送します。ただし、ネイティブページから戻ると、コールバック関数(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'});
};
.

役に立ちましたか?

解決

コメントの説明に基づいて:変数の代わりにコールバック関数を関数として定義してみてください。

function backFromNativePage(data) { 
    ...
}
.

他のヒント

私はあなたのコードの大部分を試みました(Webクライマル部分を使用しなかった)、新しいプロジェクトとして機能します。

Worklightサンプルをダウンロードしてテストできますか?

最も重要な、ネイティブページはあなたのためにロードされます、意味、Android-manifest.xmlにアクティビティを追加しましたか?

あなたはそれを見ることができるようにあなたのEclipseプロジェクトをどこかにアップロードすることができます、そして何が間違っているのを見てください。 これは本当に問題なく機能するはずです。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top