Necesita ayuda con el botón de retroactiva para volver a la vista web

Este es mi código:

package com.testappmobile; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.Window; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; public class testappmobileActivity extends Activity { final Activity activity = this; private WebView webview; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // Check if the key event was the BACK key and if there's history if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { webview.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); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.getWindow().requestFeature(Window.FEATURE_PROGRESS); setContentView(R.layout.main); WebView webView = (WebView) findViewById(R.id.webview); webView.getSettings().setJavaScriptEnabled(true); webView.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int progress) { activity.setTitle("Loading..."); activity.setProgress(progress * 100); if(progress == 100) activity.setTitle(R.string.app_name); } }); webView.setWebViewClient(new WebViewClient() { @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { // Handle the error } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); webView.loadUrl("http://developer.android.com/index.html"); } } 

Ahora estoy teniendo problemas para obtener el botón de hardware atrás para trabajar. La aplicación carga bien como lo hace la página y todo lo demás, pero tan pronto como me golpeó el botón de teléfono de nuevo se bloquea, entonces las fuerzas de cerca. He buscado google durante las últimas 3 horas y sólo he encontrado respuestas vagas con muy poca información o enlaces rotos. Las instrucciones de Google chuparon también como soy un principiante y suponen que usted sabe una cierta cantidad.

¿Dónde debo colocar el código si está en el lugar equivocado?

¿Hay errores?

¡Aclamaciones!

2 Solutions collect form web for “Necesita ayuda con el botón de retroactiva para volver a la vista web”

Ha creado una referencia webView en el nivel de clase pero nunca lo ha inicializado por eso NullPointerException. He hecho un pequeño cambio en el método onCreate en su código, lo onCreate y hago los cambios necesarios;

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.getWindow().requestFeature(Window.FEATURE_PROGRESS); setContentView(R.layout.main); // Don't create another webview reference here, // just use the one you declared at class level. webView = (WebView) findViewById(R.id.webView); webView.getSettings().setJavaScriptEnabled(true); webView.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int progress) { activity.setTitle("Loading..."); activity.setProgress(progress * 100); if(progress == 100) activity.setTitle(R.string.app_name); } }); // rest of code same // ... // ... // ... } 

Espero que lo consigas. 🙂

Tiene dos referencias diferentes a WebView. Primero local en onCreate, que se pierde. Segundo miembro de webview que usas en onKeyDown, pero que es nulo todo el tiempo.

  • De ancho: 100% en CSS no bien renderizado en Android 4.4
  • ¿Cómo desactiva webview una vez adjunto?
  • WebView no cambia de tamaño
  • Android 4.0.1 rompe el almacenamiento local HTML 5 de WebView?
  • El controlador onScaleChanged de WebView se llama varias veces
  • Alerta de seguridad de Android WebView SSL
  • Cómo trabajar con ventanas emergentes ventana en android webview
  • Interceptar solicitudes POST en un WebView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.