我可以显示ProgressDialog,但是在加载WebView后我无法停止它。我只需要一个简单的刷新按钮。
到目前为止,这是工作代码:
public class Quotes extends Activity implements OnClickListener{
WebView webview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webview = (WebView) findViewById(R.id.scroll);
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("http://www.dgdevelco.com/quotes/quotesandroid.html");
View refreshClick = findViewById(R.id.refresh);
refreshClick.setOnClickListener(this);
}
public void onClick(View v){
switch(v.getId()){
case R.id.refresh:
ProgressDialog.show(Quotes.this, "", "Loading...", true);
webview.reload();
}
}
}
我无法弄明白。我到处都看,但似乎没什么用。
答案 0 :(得分:5)
这是快速回答,你应该真正为WebViewClient实现自己的类,你应该在该类中显示对话框,但你会想出来的。
首先,将对话框设为全局,(在您的真实应用程序中,您可能希望将其传递给客户端,或者在webview客户端中声明它,然后在onPageStarted上覆盖)。
ProgressDialog dialog;
然后简单地说:
webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
dialog.dismiss();
}
});
public void onClick(View v){
switch(v.getId()){
case R.id.refresh:
dialog = ProgressDialog.show(Quotes.this, "", "Loading...", true);
webview.reload();
}
}
}
这是您需要的API:WebViewClient
修改的
好的,这让我感到烦恼,这是正确的方法:
public class Quotes extends Activity implements OnClickListener{
private WebView webview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webview = (WebView) findViewById(R.id.scroll);
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebViewClient(new MyWebViewClient(this));
webview.loadUrl("http://www.dgdevelco.com/quotes/quotesandroid.html");
findViewById(R.id.refresh).setOnClickListener(this);
}
public void onClick(View v){
switch(v.getId()){
case R.id.refresh:
webview.reload();
break;
}
}
}
新班级:
public class MyWebViewClient extends WebViewClient {
private Context mContext;
private ProgressDialog mDialog;
public MyWebViewClient(Context context){
mContext = context;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
mDialog = ProgressDialog.show(mContext, "", "Loading...", true);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
mDialog.dismiss();
}
}