我的应用需要在webview中呈现多个网页,并提供goback()
方法。
但遗憾的是goback()
方法在我们加载url(来自多个页面的url之一)没有退出(网页不可用)的情况下不起作用然后我们尝试调用{{ 1}}
答案 0 :(得分:1)
您似乎只是在下面尝试简单的代码使代码复杂化
#include "boost/property_tree/ptree.hpp"
#include "boost/property_tree/json_parser.hpp"
#include "boost/foreach.hpp"
void traverse(boost::property_tree::ptree pt){
using boost::property_tree::ptree;
for (ptree::value_type &v : pt)
{
std::cout<<v.first<<" - "<<v.second.data()<<std::endl;
if (v.second.size() >= 1){
traverse(v.second);
}
}
}
这是简单的代码,对你来说很好,我不知道你是否因为其他原因使用了旗帜。
答案 1 :(得分:0)
你可以这样做。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
如果您的网页不可用,则可以使用onReceivedError
方法。
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@TargetApi(Build.VERSION_CODES.M)
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
if (request.isForMainFrame()) {
// you can do something when you Web page not available
// webView.goBack();
}
}
});