2016-03-23 16 views
0

Dies ist der Code meiner WebView. Die WebView läuft korrekt, aber das Problem tritt auf, wenn ich die Zurück-Taste drücke: Die App wird geschlossen.Android-Webansicht wird geschlossen, wenn Taste "Zurück" gedrückt wird

@Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 

     //enable layout 
     setContentView(R.layout.activity_main); 

     //create istance webview 
     WebView myWebView = (WebView) findViewById(R.id.webview); 

     //initialize webview's settings 
     WebSettings webSettings = myWebView.getSettings(); 

     //enable javascript 
     webSettings.setJavaScriptEnabled(true); 

     //load image 
     webSettings.setLoadsImagesAutomatically(true); 

     //inizialize client 
     MyWebViewClient myWebViewClient = new MyWebViewClient(); 

     //set webview to client 
     myWebView.setWebViewClient(myWebViewClient); 

     //load website by URL 
     myWebView.loadUrl(website_url); 

     this.onStart(); 
    } 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     // Check if the key event was the Back button and if there's history 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) { 
      myWebView.goBack(); 
      return true; 
     } 
     // If it wasn't the Back key or there's no web page history, bubble up to the default 
     // system behavior (probably exit the activity) 
     return super.onKeyDown(keyCode, event); 
    } 
} 

Crashlog:

03-23 14:43:18.530 14051-14051/com.quogito.quogito W/UnimplementedWebViewApi: Unimplemented WebView method onKeyDown called from: android.webkit.WebView.onKeyDown(WebView.java:2319) 
03-23 14:43:18.620 14051-14051/com.quogito.quogito E/InputEventSender: Exception dispatching finished signal. 
03-23 14:43:18.620 14051-14051/com.quogito.quogito E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback 
03-23 14:43:18.620 14051-14051/com.quogito.quogito E/MessageQueue-JNI: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.webkit.WebView.canGoBack()' on a null object reference 
at com.quogito.quogito.MainActivity.onBackPressed(MainActivity.java:113) 
at android.app.Activity.onKeyUp(Activity.java:2497) 

Antwort

0

Sie Ihre myWebView Objekt innerhalb des onCreate Methode an dieser Linie Shadowing:

WebView myWebView = (WebView) findViewById(R.id.webview); 

was bedeutet, dass Ihre globale Variable namens myWebView nie ist einstellen.

Ändern Sie die Zeile in der onCreate dieser Stelle:

myWebView = (WebView) findViewById(R.id.webview); 

dann sollte es funktionieren.

+0

dich so sehr danken. Sie helfen mir, ein anderes Problem zu lösen (das Aktualisieren der Seite mit Wischen). Bevor es nicht läuft. –

0

Versuchen Sie, diese

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (event.getAction() == KeyEvent.ACTION_DOWN) { 
     switch (keyCode) { 
      case KeyEvent.KEYCODE_BACK: 
       if (mWebView.canGoBack()) { 
        mWebView.goBack(); 
       } else { 
        finish(); 
       } 
       return true; 
     } 

    } 
    return super.onKeyDown(keyCode, event); 
}