バックボタンを使用してロードする前にProgressBarを却下するにはどうすればよいですか?
-
28-10-2019 - |
質問
WebビューにProgress Barを使用しています。ページロードの前に進行状況バーを停止する必要があります。バックボタンを押しますが、ロードの間に動作しません。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.webview);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
progressBar =new ProgressDialog(this);
progressBar.setCancelable(true);
progressBar.show();
mWebView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.i("TEST", "Processing webview url click...");
view.loadUrl(url);
return true;
}
public void onPageFinished(WebView view, String url) {
Log.i("TEST", "Finished loading URL: " +url);
if (progressBar.isShowing()) {
progressBar.dismiss();
}
}
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Log.e("TEST", "Error: " + description);
Toast.makeText(getApplicationContext(), "Oh no! " + description, Toast.LENGTH_SHORT).show();
alertDialog.setTitle("Error");
alertDialog.setMessage(description);
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
return;
}
});
alertDialog.show();
}
});
mWebView.loadUrl("http://www.google.com");
}
バックボタンテストには、これを使用します
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
Toast.makeText(getApplicationContext(),"hi", Toast.LENGTH_LONG).show();
return true;
}
return super.onKeyDown(keyCode, event);
}
解決
こんにちはこれをチェックしてください
progressBar = new ProgressDialog(this);
progressBar.setCancelable(true);
progressBar.setOnCancelListener(new OnCancelListener() {
public void onCancel(DialogInterface arg0) {
if(progressBar.isShowing())
progressBar.dismiss();
finish();
}
});
progressBar.setMessage("Loading...");
progressBar.show();
みんなありがとう
他のヒント
もし私があなただったら、Asynctaskを使用してURLのデータをロードし、その間に進行状況を表示します。
- 開始時に、URLのコンテンツを取得する別のスレッドを出してください
- ProgressDialogの表示を開始します
- スレッドが返されたURLのデータがある場合は、WebViewにロードします
- ProgressDialogを却下します
別のスレッドで物事を実行するには、asynctaskをチェックアウトしてください。
MultiThreadingを使用して、UIWorkerスレッドを使用して進捗と視覚的な外観を実装します
所属していません StackOverflow