1

WebViewから始めたいのAsyncTaskですが、動かないようです。これは私のonPostExecute方法がどのように見えるかです:

  public class Viewer extends AsyncTask<URI, Integer, URI> {

      private Activity objContext = null;

      public Viewer(Activity objContext) {
        this.objContext = objContext;
      }

      protected void onPostExecute(URI uriWebpage) {
          WebView wbvBrowser = new WebView(this.objContext);
          wbvBrowser.getSettings().setBuiltInZoomControls(true);
          wbvBrowser.getSettings().setJavaScriptEnabled(true);
          wbvBrowser.loadUrl(uriWebpage.toString());
      }

  }

私のタスクはアプリケーションの2つのアクティビティで使用されているため、グローバルobjContext変数の型はActivityです。変数のタイプをobjContext呼び出し元のクラスの名前に変更すると、正常に機能しますが、他の呼び出し元のクラスからタスクをインスタンス化できません。このようにタスクをインスタンス化します。

Viewer mytask = new Viewer(this);

どうすればこれを解決できますか?

4

4 に答える 4

1

setContentView元のレイアウトからwebViewに変更しましたか、それともwebviewを配置するためのコンテナーがありますか?そうしないと、webViewUIが表示されないと思います。

于 2012-09-07T08:40:42.537 に答える
0

問題を解決しました。Activityまたはの使用とは何の関係もありませんContext。どちらも問題なく動作します。一部のURLはをロードしていないようですWebViewWebViewGoogleのようなサイトを指すようにのURLを変更しましたが、問題なく機能しました。URLが正しくない場合、はWebView例外をスローしませんが、どちらも開きません。

于 2012-09-11T11:43:24.870 に答える
0

AsyncTaskを実行してもよろしいですか

                    @Override
            protected void onPostExecute(Void result){              


            }
        }.execute();

また、名前をクラス化する必要があります

Viewer mytask = new Viewer(YourclassName.this);

//またはこれはあなたを助けるかもしれません

     private Context  mcontext;

          public Viewer(Context  objContext) {
            this.mcontext= objContext;
          }

  protected void onPostExecute(URI uriWebpage) {
          WebView wbvBrowser = new WebView(((Activity)(mcontext)));

      }
于 2012-09-07T08:46:26.977 に答える
-2

なぜこれが起こるのかわかりませんが、組み込みのWebブラウザをで起動してみませんIntentonPostExecute(Uri uriWebpage)

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(uriWebPage);
startActivity(intent);

この解決策で満足できない場合は、LogCatからエラースタックトレースを投稿してください。

于 2012-09-06T14:22:46.907 に答える