/ / Aplicativo da Web na Web Visualizar Botão Voltar - java, android, webview

Aplicativo Android Vista da Web Voltar Botão - java, android, webview

Eu tenho um aplicativo da web que funciona bem, mas não consigo obter o botão Voltar para funcionar na visualização da web. Por favor, veja o código:

package com.example;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.view.KeyEvent;

public class extends Activity
{
final Activity activity = this;


WebView WebView;
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.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setUseWideViewPort(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://www.example.com");
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (WebView != null && (keyCode == KeyEvent.KEYCODE_BACK) && WebView.canGoBack()) {
WebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
}

O aplicativo é executado, mas quando o botão Voltar estápressionado ainda sai do aplicativo. Eu também estou querendo adicionar a capacidade de usar uma tag mailto html com o aplicativo. Qualquer ajuda seria apreciada. Obrigado.

Respostas:

1 para resposta № 1

Editar:

Inclua uma verificação nula para ver se o WebView é nulo antes de invocar métodos nele.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (WebView != null && (keyCode == KeyEvent.KEYCODE_BACK) && WebView.canGoBack()) {
WebView.goBack();
return true;
}

0 para resposta № 2

Seu código parece correto para mim. Qual é o comportamento exato que você espera alcançar com o botão Voltar?

O que acontece atualmente quando você executa o aplicativo e pressiona o botão Voltar?

Edit, oh eu vejo o que está acontecendo.

Você está tentando substituir onKeyDown () dentro de seu onCreate (). onKeyDown () e onCreate () são ambos métodos de Activity, assim você não pode declarar um dentro do outro.

Tente seu código assim:

package com.example;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.view.KeyEvent;

public class DealJargon extends Activity {
final Activity activity = this;


WebView WebView;
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.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setUseWideViewPort(true);
webView.loadUrl("http://www.example.com");
}




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;
}
});


}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && WebView.canGoBack()) {
WebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
}

Editar 2: Sempre que você receber algum tipo de erro de compilação que tenha algo a ver com uma chave, é provável que você esteja tentando declarar um método dentro da declaração de outro método. Ou algo parecido.