【发布时间】:2015-11-28 23:43:59
【问题描述】:
This 类似的 SO 问题没有帮助。
我为我的MainActivity 实现了一个简单的WebView,它在应用启动时加载特定网页。我有一个TextView,它显示了当前网页的加载百分比。代码如下
public class MainActivity extends AppCompatActivity {
WebView webView;
final String homeUrl = "https://example.com";
String lastAccessedUrl = homeUrl;
WebChromeClient webChromeClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
webView = (WebView) findViewById(R.id.browser);
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setBuiltInZoomControls(true);
settings.setLoadsImagesAutomatically(false);
settings.setLoadWithOverviewMode(true);
settings.setUseWideViewPort(true);
webView.canGoBack();
webView.canGoForward();
webView.setWebViewClient(new MyBrowser());
webView.loadUrl(homeUrl);
webChromeClient = new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
TextView textView = (TextView) findViewById(R.id.loadingPercentage);
textView.setText(""+newProgress);
}
};
webView.setWebChromeClient(webChromeClient);
}
private class MyBrowser extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
lastAccessedUrl = url;
view.loadUrl(url);
return true;
}
}
}
我面临的问题是,TextView 仅在网页第一次加载时显示加载百分比。然后将其永久设置为 100。然后,如果我单击第一页上的任何链接,TextView 不会从零开始。
如果您投反对票,请在 cmets 中证明其合理性。 任何帮助将不胜感激。
【问题讨论】:
-
我不认为这是导致您的问题的原因,但您应该将
TextView textView = (TextView) findViewById(R.id.loadingPercentage);放在onCreate()的进度更改回调之外。如果您为活动找到一次视图,则可以继续更改其中的文本,而不必每次都重新找到它。 -
@FoamyGuy 这是明显而愚蠢的错误。谢谢你指出。 :)。