0

ボタンが 1 つある単純なアプリケーションがあります。ボタンを押すと、ダイアログが開き、プログレス バーが表示されます。URL が読み込まれると、webview に画像が表示されます。面白いことに、100回押しても開かないことがあります。Android 2.3.3 とエミュレータ 4.0.3 の実機でテストしました。

誰かが理由を知っていますか?

HelloWebViewActivity.java

public class HelloWebViewActivity extends Activity {

ProgressBar progressBar;
WebView a;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

  this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
  setContentView(R.layout.main );

  TextView buttona = (TextView) findViewById(R.id.button);
  buttona.setOnClickListener(new OnClickListener() {
     public void onClick(View v) {
        final Dialog dialog = new Dialog(HelloWebViewActivity.this);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.requestWindowFeature(Window.FEATURE_PROGRESS);
        dialog.setContentView(R.layout.webview);

        a = (WebView) dialog.findViewById(R.id.webview); 
        a.getSettings().setSupportZoom(true);      
        a.getSettings().setBuiltInZoomControls(true);

        progressBar = (ProgressBar) dialog.findViewById(R.id.progressbar);
        progressBar.setProgress(0);
        progressBar.setVisibility(View.VISIBLE);
        a.setWebChromeClient(new WebChromeClient(){
        public void onProgressChanged(WebView view, int progress) {
            progressBar.setProgress(progress);
            if(progress == 100) {
                progressBar.setVisibility(View.GONE);
                }
            }
    });
      a.loadUrl("http://www.deshow.net/d/file/car/2010-10/seat-electric-car-879-2.jpg");
      dialog.setCancelable(true);
      dialog.show();
      }
  }); 

}
}

webview.xml

 <?xml version="1.0" encoding="utf-8"?>

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent" >


 <ProgressBar 
     android:id="@+id/progressbar"
     style="?android:attr/progressBarStyleHorizontal"
     android:layout_width="fill_parent"
     android:layout_height="20dp"
     android:max="100"
     android:visibility="gone" />

 <WebView
     android:id="@+id/webview"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"/>

 </LinearLayout>
4

1 に答える 1

0

私はそれを解決しませんでしたが、回避策を作りました。画像の URL を取得する onResume を使用して、新しいアクティビティで webview を作成しました。このようにして、画像はダイアログではなくアクティビティに読み込まれます。これはあまり派手ではありませんが、常にプログレス ホイールで読み込まれます。

于 2012-08-14T23:03:23.527 に答える