0

ブラウザにリダイレクトする代わりに、アプリの内部を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>
4

2 に答える 2

2

AsyncTaskメソッドのバックグラウンド アクション (URL の読み込み) を実行する必要がありますdoInBackground()

onPostExecute()UI スレッドで呼び出されるため、実行中に UI がフリーズします。

詳細については、のドキュメントを参照しAsyncTaskてください。

于 2013-03-06T20:41:15.847 に答える
1

pubishProgress()内で使用する必要がありdoInBackgroundます。

次に onProgressUpdate をオーバーライドします

于 2013-03-06T20:42:09.083 に答える