【发布时间】:2017-06-28 22:25:51
【问题描述】:
我遇到了一个非常有趣的问题。我在我的一个 Android 应用程序中使用 inAppBrowser 和微调器。 Spinner 使用ProgressDialog 实现。这里的问题是,当我尝试通过 inAppBrowser 打开网页并且加载微调器在页面开始加载后开始加载,然后在完成加载页面后关闭时,当我点击该页面的输入字段并尝试键入字母或数字,它只是停留在所谓的“锁定”状态。如果我输入一些我看不到的内容,光标就会一直闪烁。
为了让这更奇怪,我可以输入特殊字符。如果我点击页面周围的任何其他位置,然后再次点击相同的输入字段,它就会起作用。另一种有效的情况是,当我将应用程序置于暂停状态然后恢复时,输入字段有效。
此问题仅在 Android 5.0.1 及更早版本的平台上出现。
inAppBrowser java 文件可以在 Github InAppBrowser java file 找到。
我的微调器实现如下:
spinner = new ProgressDialog(cordova.getActivity());
spinner.setIndeterminate(false);
spinner.setProgressStyle(ProgressDialog.STYLE_SPINNER);
spinner.setCancelable(false);
spinner.setMessage(cordova.getActivity().getText(R.string.spinner_loading));
spinner.setTitle("");
我通过以下方式显示/隐藏微调器:
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
//InAppBrowser default code....
try {
JSONObject obj = new JSONObject();
obj.put("type", LOAD_START_EVENT);
obj.put("url", newloc);
sendUpdate(obj, true);
} catch (JSONException ex) {
Log.d(LOG_TAG, "Should never happen");
}
spinner.show();
}
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
try {
JSONObject obj = new JSONObject();
obj.put("type", LOAD_STOP_EVENT);
obj.put("url", url);
sendUpdate(obj, true);
} catch (JSONException ex) {
Log.d(LOG_TAG, "Should never happen");
}
spinner.hide();
}
这可能是什么问题?任何提示,建议将不胜感激。
【问题讨论】:
-
你能用chrome检查器调试设备中的应用程序,并检查控制台是否有任何错误吗?
-
@Gandhi:我已经修好了,谢谢你的评论。
标签: java android cordova spinner inappbrowser