Java 加载WebView后无法停止ProgressDialog
我可以让ProgressDialog显示,但无法在WebView加载后让它停止。我所需要的只是一个简单的刷新按钮 以下是迄今为止的工作代码:Java 加载WebView后无法停止ProgressDialog,java,android,webview,refresh,progressdialog,Java,Android,Webview,Refresh,Progressdialog,我可以让ProgressDialog显示,但无法在WebView加载后让它停止。我所需要的只是一个简单的刷新按钮 以下是迄今为止的工作代码: public class Quotes extends Activity implements OnClickListener{ WebView webview; @Override public void onCreate(Bundle savedInstanceState) { super
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();
}
}
}
我就是搞不懂。我到处都找过了,但似乎什么都不管用。这是一个快速的答案,你应该为WebViewClient实现你自己的类,你也应该在该类中显示对话框,但你会找到答案的 首先,使您的对话框成为全局的(在您的真实应用程序中,您可能希望将其传递给您的客户端,或者在webviewclient中声明它,然后在onPageStarted上重写) 然后简单地说:
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:
编辑
好吧,这让我很恼火,以下是正确的方法:
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();
}
}
这是一个快速的答案,您应该为WebViewClient实现自己的类,您也应该在该类中显示对话框,但您会发现这一点 首先,使您的对话框成为全局的(在您的真实应用程序中,您可能希望将其传递给您的客户端,或者在webviewclient中声明它,然后在onPageStarted上重写) 然后简单地说:
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:
编辑
好吧,这让我很恼火,以下是正确的方法:
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();
}
}
从右边的相关部分开始:答案左边的数字下面有一个勾号的轮廓。按那个。这就是你如何标记一个正确答案,并让你上瘾于StackOverflow;-)从右边的相关部分开始:答案左边的数字下面有一个勾号的轮廓。按那个。这就是你如何标记一个正确答案,并让你上瘾于StackOverflow;-)成功了!!!你太棒了!!!非常感谢你!我知道它一定在某个地方。你太棒了!谢谢谢谢谢谢。:)成功了!!!你太棒了!!!非常感谢你!我知道它一定在某个地方。你太棒了!谢谢谢谢谢谢。:)