2016-02-05 135 views
-1

在编译我得到这个错误:的Android不兼容类型的错误

error: incompatible types: <anonymous WebViewClient> cannot be converted to Context 

错误是由该行未来:

progress = ProgressDialog.show(this, "", "Loading...", true); 

this,就是要Context类的,我觉得它的东西要做到这一点,我不明白上下文是什么或如何解决它。

MainActivity.java

public class MainActivity extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 

    ProgressDialog progress; 

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

     WebView webView = (WebView) findViewById(R.id.webView); 
     webView.getSettings().setJavaScriptEnabled(true); 

     webView.setWebViewClient(new WebViewClient() { 
      DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView webView, String urlNewString) { 
       webView.loadUrl("http://www.google.com"); 
       return true; 
      } 
      @Override 
      public void onPageStarted(WebView webView, String url, Bitmap facIcon) { 
       progress = ProgressDialog.show(this, "", "Loading...", true); // the offending line 
      } 
      @Override 
      public void onPageFinished(WebView webView, String url) { 
       drawer.closeDrawer(GravityCompat.START); 
       progress.dismiss(); 
      } 
      public void onReceivedError(WebView webView, int errorCode, String description, String failingUrl) { 
       webView.loadUrl("file:///android_asset/www/error.html"); 
       drawer.openDrawer(GravityCompat.START); 
       progress.dismiss(); 
      } 
     }); 
     . 
     . 
    } 
    . 
    . 
} 

回答

5

变化

progress = ProgressDialog.show(this, "", "Loading...", true); 

progress = ProgressDialog.show(MainActivity.this, "", "Loading...", true); 

这行代码是匿名类的onPageStarted方法内。所以this引用了匿名类,而不是当前的活动上下文。

+1

谢谢,这是固定的错误。但现在它正在运行,我可以看到代码有严重问题,谷歌网页无法加载,并且它不再响应android后退按钮。 – Bazley