ionic3中的角度动画在收到android自定义cordova插件对按下按钮的响应后停止工作
我现在正在开发一个定制的cordova插件Android,用于Ionic。插件使用以下代码将侦听器添加到WebView:ionic3中的角度动画在收到android自定义cordova插件对按下按钮的响应后停止工作,cordova,ionic3,cordova-plugins,Cordova,Ionic3,Cordova Plugins,我现在正在开发一个定制的cordova插件Android,用于Ionic。插件使用以下代码将侦听器添加到WebView: this.callbackContext = callbackContext;//store this for later this.webView.getView().setOnKeyListener(this);//add listener PluginResult pluginResult = new PluginResu
this.callbackContext = callbackContext;//store this for later
this.webView.getView().setOnKeyListener(this);//add listener
PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT); // send no result cause the result will be sent by the listener
pluginResult.setKeepCallback(true);
this.callbackContext.sendPluginResult(pluginResult);
然后我用以下方式覆盖侦听器:
@凌驾
公共布尔onKeyView视图,int-keyCode,KeyEvent-KeyEvent{
JSONObject结果=新的JSONObject;
如果keyEvent.getAction==keyEvent.ACTION\u向下{
如果keyCode==KeyEvent.keyCode_VOLUME|u UP | | keyCode==KeyEvent.keyCode_VOLUME|u DOWN
{
试一试{
结果。按下按钮,按下按钮;
}捕获JSONException错误{
}
}
PluginResult pr=新PluginResultPluginResult.Status.OK,结果;
pr.setKeepCallbackkeepCallback;
this.callbackContext.sendPluginResultpr;
返回false;
}
返回true;
} 很可能您需要强制执行detectChanges,或者在ngZone内运行它
constructor(private ref: ChangeDetectorRef){}
ngOnInit() {
cordova.plugins.buttonListener.listenButtonClick(data => {
this.buttonState = 'big';
this.ref.detectChanges();
}, err => { });
}
或使用ngZone:
constructor(private ngZone: NgZone){}
ngOnInit() {
this.ngZone.run(() => {
cordova.plugins.buttonListener.listenButtonClick(data => {
this.buttonState = 'big';
}, err => { });
});
}
你能添加你是如何触发动画的吗?你能添加插件回调是如何设置变量buttonState的吗?是的,我在上面更新了谢谢,我会尽快尝试。问题:我从来没有手动触发过变更检测器,为什么在这种情况下需要这样做?因为变更是在外部完成的。这是科尔多瓦公司的回电,所以变化超出了范围。因此Angular需要知道某些内容已被更改,因此您可以调用DetectChanges。这是唯一需要更改的内容:在回调中调用ngZone.run,因为更改应该在事件到达后触发,而不是在设置侦听器时触发。