我创建了一个WebViewActivity
扩展Activity
并在我的应用内显示WebView
,而不是重定向到浏览器。
因此,当视图加载时,我尝试使用AsyncTask
来显示我的ProgressBar
。但进度条根本不显示。这是我正在使用的代码:
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Window;
import android.webkit.WebView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.app.Activity;
public class WebViewActivity extends Activity {
WebView webView;
TextView textView;
ProgressBar bar;
private class Async extends AsyncTask<Void, Void, Void> {
protected Void doInBackground(Void... arg0) {
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
String url = new String(getIntent().getStringExtra("url"));
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.loadUrl(url);
textView.setText(getIntent().getStringExtra("title"));
bar.setVisibility(ProgressBar.INVISIBLE);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_web_view);
vueText = (TextView) findViewById(R.id.barTitle);
vueWeb = (WebView) findViewById(R.id.WebView);
bar = (ProgressBar) findViewById(R.id.progressBar);
bar.setVisibility(ProgressBar.VISIBLE);
new Async().execute();
}
}
这是我的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/grayBackground"
android:orientation="vertical" >
<TextView
android:id="@+id/barTitle" />
<ScrollView
android:id="@+id/sc1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/barTitle"
android:fillViewport="true" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<WebView
android:id="@+id/WebView"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:visibility="visible" />
</RelativeLayout>
答案 0 :(得分:2)
您应该在AsyncTask
方法中执行doInBackground()
的后台操作(加载网址)。
在UI线程上调用onPostExecute()
,以便在运行时冻结UI。
有关详细信息,请参阅AsyncTask
的文档。
答案 1 :(得分:1)
您必须在pubishProgress()
内使用doInBackground
。
然后覆盖onProgressUpdate