IBM Worklight 6.1 - コールバックで返されたデータ(wl.nativepage.show())は未定義です
-
21-12-2019 - |
質問
この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プロジェクトをどこかにアップロードすることができます、そして何が間違っているのを見てください。 これは本当に問題なく機能するはずです。