项目中用到webview,现在发现只要webview接到touch事件后,再按BACK,程序就会给人一种退出的假像,然后再点应用图标进入到就用后应用处于黑屏状态,只有左右角的FPS信息,也就是说GLSurface不渲染了。
目前论坛里的解决办法是更改Cocos2dxWebView的setFocusableInTouchMode(false).但这样更改的话,如果网页中有输入框,那么输入框将无法唤起输入法。最终我的更改方法是重写Cocos2dxWebView的onkeydown和onkeyup,
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
Log.i("ZQ", "WEBVIEW ONKEYDOWN....................");
if (event.getKeyCode()==KeyEvent.KEYCODE_BACK) {
//防止显示WEBKVIEW时按BACK会直接退出应用的问题
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
Log.i("ZQ", "WEBVIEW ONKEYUP....................");
if (event.getKeyCode()==KeyEvent.KEYCODE_BACK) {
//防止显示WEBKVIEW时按BACK会直接退出应用的问题
Util.PopScene();
return true;
}
return super.onKeyUp(keyCode, event);
}
Util.PopScene();为native方法,调用c++中的Director::getInstance()->popScene();
另外还想问,webview获取到焦点了,为何不响应其他按键,如上下左右手柄上的ABXY。只响应到了KEYCODE_BACK?