¿Existe una manera de anular el comportamiento de WebView?

Obtengo el WebView de mi diseño:

  WebView webView = (WebView) rootView.findViewById(R.id.myWebView); 

Quiero anular el comportamiento de onKeyDown . Normalmente, puedo anularlo subclassing.

  WebView webView = new WebView(this) { @Override public boolean onKeyDown (int keyCode, KeyEvent event) { // Do my stuff.... } } 

Sin embargo, puesto que conseguí el WebView usando findViewById , hay una manera de anular el método?

PS: En realidad es un caso mucho más complicado, y no puedo reemplazar onKeyDown en MainActivity , ya que llamar a la onKeyDown en WebView primero.

Si desea anular ciertos métodos, debe crear una clase WebView personalizada que extends WebView .

Se vería algo como esto:

 public class CustomWebView extends WebView { public CustomWebView(Context context) { this(context, null); } public CustomWebView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public CustomWebView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); /* any initialisation work here */ } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { /* your code here */ return super.onKeyDown(keyCode, event); } } 

Para que esto funcione, tiene que cambiar el archivo de diseño XML en consecuencia:

 <com.example.stackoverflow.CustomWebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent" /> 

Además, cuando infle el WebView , asegúrese de que está enviándolo al tipo correcto que es CustomWebView .

 CustomWebView webView = (CustomWebView) findViewById(R.id.webview); 

De lo contrario, obtendrá una java.lang.ClassCastException .

  • Webview no puede cargar https url en android?
  • Cómo obtener título de página web cargado en Android WebView?
  • Utilizar folleto en una aplicación de Android para mostrar el mapa en línea
  • Pase el token de acceso de Facebook al cuadro de comentarios
  • ¿Cuál es la diferencia entre LOAD_DEFAULT y LOAD_NORMAL para WebSettings?
  • Responder sitio web mostrar en la vista Web fuera de ancho móvil (no sensible) de otra manera en Chrome se ve bien
  • Android ViewPager enfoca automáticamente WebView
  • ShouldOverrideUrlLoading en WebView para Android no se está ejecutando
  • El WebView que se ejecuta en el emulador en Android Studio no puede acceder a Internet, pero Chrome puede?
  • NullPointerException al ingresar video en pantalla completa webview nokia x
  • Shouldoverrideurlloading no se llama Webview Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.