2016-05-09 2 views
2

Ich habe eine WebView in einem Fragment mit einem YouTube-Video. Als ich Taste setzt die youtube drücken zurück Audio-Wiedergabe:youtube Audio spielt immer in Android-Webview, wenn ich zurück Button

View view = inflater.inflate(R.layout.fragment, container, false); 
configView(view); 


view.setFocusableInTouchMode(true); 
view.requestFocus(); 
view.setOnKeyListener(new View.OnKeyListener() 
{ 
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) 
    { 
     if(keyCode == KeyEvent.KEYCODE_BACK) 
     { 
      if (null != webView) 
      { 
       webView.loadUrl("about:blank"); 
      } 
     } 
     return false; 
    } 
}); 

Auf der anderen Seite, wenn ich die App auf den Hintergrund setzen die onPause() Ereignis korrekt funktioniert:

@Override 
public void onPause() 
{ 
    super.onPause(); 
    if (null != webView) 
    { 
     webView.loadUrl("about:blank"); 
    } 
} 

Warum es nicht funktioniert, wenn Ich drücke Zurück-Taste? Irgendeine Lösungsmöglichkeit?

Antwort

1

Wenn ein Youtube-Video abgespielt wird, gehört das Zurück-Button-Ereignis zur Webansicht. Das Fragment behandelt dieses Ereignis nicht. Die Lösung lautet:

webView.setOnKeyListener(new View.OnKeyListener() 
    { 
     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) 
     { 
      if (keyCode == KeyEvent.KEYCODE_BACK) 
      { 
       if (null != webView) 
       { 
        webView.stopLoading(); 
        webView.destroy(); 
       } 
      } 
      return false; 
     } 
    }); 
0

ein allgemeinerer Ansatz:

@Override 
protected void onResume() { 
    super.onResume(); 
    try { 
     WebView.class.getMethod("onResume").invoke(wvBorwser); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    try { 
     WebView.class.getMethod("onPause").invoke(wvBorwser); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
Verwandte Themen