2016-09-22 1 views
-4

私はAndroidには新しい私は今、私はそれを開発しようとしているブラウザのアプリケーションを開発したい、エラーが表示されます。私は別の方法でも、それを開くようにしなければならないブラウザーを求めていますが、私にとっては私のアプリケーションでのみ開きたいと思っています。あなたはdoInBackground()メートルでWebViewにURLをロードしている私はブラウザのアプリケーションを開発したいが、エラーが出る

WebviewActivity.java

package com.example.admin.fristapp; 

import android.app.Activity; 
import android.os.AsyncTask; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.webkit.WebResourceRequest; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class WebviewActivity extends Activity { 
    WebView webview1; 
    // String url = "http://www.google.com"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_webview); 
     webview1 = (WebView) findViewById(R.id.webview1); 
     // webview1.loadUrl(url); 

     //MyBrowser my ; 

     new Background().execute(); 


    } 

    public class MyBrowser extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 
    } 




    public class Background extends AsyncTask<String,String,String> 
    { 
     @Override 
     protected void onPostExecute(String s) 
     { 
      super.onPostExecute(s); 
     } 
     @Override 
     protected void onPreExecute() 
     { 
      super.onPreExecute(); 
     } 

     @Override 
     protected String doInBackground(String... strings) 
     { 
      search(); 
      return null; 
     } 
    } 
    public void search() 
    { 
     webview1.setWebViewClient(new WebviewActivity.MyBrowser()); 
     String url = "http://www.google.com"; 
     webview1.getSettings().setJavaScriptEnabled(true); 
     webview1.loadUrl(url); 
    } 
} 

logcat

java.lang.Throwable: A WebView method was called on thread 'AsyncTask #4'. All WebView methods must be called on the same thread. (Expected Looper Looper (main, tid 1) {180a245b} called on null, FYI main Looper is Looper (main, tid 1) {180a245b}) 
                      at android.webkit.WebView.checkThread(WebView.java:2290) 

Afteredit

import android.app.Activity; 
import android.os.AsyncTask; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.webkit.WebResourceRequest; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class WebviewActivity extends Activity { 
    WebView webview; 
    String url = "http://www.google.com"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_webview); 

     webview =(WebView)findViewById(R.id.webview1); 
       //WebView(WebviewActivity.this); 
     webview.loadUrl(url); 

     webview.setWebViewClient(new WebViewClient() { 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       view.loadUrl(url); 
       return false; 
      } 

      @Override 
      public void onPageFinished(WebView view, String url) { 
       super.onPageFinished(view, url); 

       // Do your code when page finished 
      } 
     }); 
+1

こんにちは、。それはUIスレッドで実行されます –

+0

その後、私は処理のバーが含まれていることを望んでいますなぜあなたはそれをyousingしています – chandu

+0

あなたはlaodingのためのあなたの進捗状況を追跡するためにonPageFinishedをオーバーライドする必要があります –

答えて

1

民法。 UIスレッドで行う必要があります。

loadUrl()は既にすべての処理を非同期で実行しています。したがって、AsyncTaskの必要はありません。コードをonCreate()メソッドに移動します。

あなたがロードインジケータを表示したい場合は、以下のように使用する必要がありますのWebView UIを実行するバックグラウンドスレッドを必要としない

WebView webview = new WebView(MainActivity.this); 

webview.setWebViewClient(new WebViewClient() { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) {  
     view.loadUrl(url);  
     return false; 
    } 

    @Override 
    public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(view, url); 

      // Do your code when page finished 
    } 
}); 

webview.loadUrl(url); 
+0

を使用しないことをお勧めします。 – chandu

+0

''あなたのマニフェストファイルに権限が追加されましたか? –

+0

また、その許可も与えました – chandu

関連する問題