的Android无法打开抽屉内onReceivedError

问题描述:

我有内onCreate验证码:的Android无法打开抽屉内onReceivedError

webView.setWebViewClient(new WebViewClient() { 

    final ProgressDialog progress = new ProgressDialog(MainActivity.this); 
    . 
    . 
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
     view.loadUrl("file:///android_asset/www/error.html"); 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.openDrawer(GravityCompat.START); 
     progress.dismiss(); 
     // onBackPressed(); // this doesn't open the drawer either 
    } 

}); 

当有它成功地检测到错误,并加载error.html没有互联网连接。但是,它拒绝打开抽屉。此外,无论我是否注释掉该行,它都会关闭进度对话框。而且,当我尝试拨打onBackPressed()时,它也无法打开抽屉。

抽屉打开,当按下后退按钮关闭精细:

@Override 
public void onBackPressed() { 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    if (drawer.isDrawerOpen(GravityCompat.START)) { 
     drawer.closeDrawer(GravityCompat.START); 
    } else { 
     drawer.openDrawer(GravityCompat.START); 
    } 
} 

为什么抽屉里不开onReceivedError?

非但没有内部onReceivedError抽屉布局参考(抽屉)中,通过声明抽屉实例变量试图在自己的onCreate得到参考。

我试图和能打开&关上抽屉,下面是样品。

public class MainActivity extends Activity { 
    private DrawerLayout mDrawerLayout; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mDrawerLayout = (DrawerLayout) 
           findViewById(R.id.drawer_layout); 

     Fragment fragment = new PlanetFragment(); 
     FragmentManager fragmentManager = getFragmentManager(); 
     fragmentManager.beginTransaction().replace(R.id.content_frame, 
             fragment).commit(); 
    } 

    public class PlanetFragment extends Fragment { 
    private WebView webView; 


    public PlanetFragment() { 
     // Empty constructor required for fragment subclasses 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.main, container, false); 
     this.webView = (WebView)rootView.findViewById(R.id.webview); 
     WebSettings settings = webView.getSettings(); 
     settings.setJavaScriptEnabled(true); 



     webView.setWebViewClient(new WebViewClient() { 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       view.loadUrl(url); 
       return true; 
      } 

      public void onPageFinished(WebView view, String url) { 

      } 

      public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
       view.loadUrl("file:///android_asset/www/error.html"); 
       mDrawerLayout.openDrawer(GravityCompat.START); 
      } 
     }); 
     webView.loadUrl("http://www.google.com"); 
     return rootView; 
    } 
} 
}