2013-03-16 62 views
2

我有一个与WebView的android应用程序,但是当我按下硬件返回按钮时,没有任何反应。我想让用户回到Webview上加载的上一页。我失去了在这个代码是什么:Android硬件返回键不工作

package kenya.cancerbank; 

import tscolari.mobile_sample.R; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class CancerBank extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     WebView mainWebView = (WebView) findViewById(R.id.mainWebView); 

     WebSettings webSettings = mainWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 

     mainWebView.setWebViewClient(new MyCustomWebViewClient()); 
     mainWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 

     mainWebView.loadUrl("http://kenyacancerbank.org/android"); 
    } 
    @Override 
    public void onBackPressed() { 
    return; 
    } 

    private class MyCustomWebViewClient extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 
    } 
} 

什么我需要添加到该代码返回时,他们按硬件返回键,他们已经访问了一个页面。

} 
    @Override 
    public void onBackPressed() { 
    return; 
    } 
+0

这个讨论有给你一个答案。 http://stackoverflow.com/questions/3141996/android-how-to-override-the-back-button-so-it-doesnt-finish-my-activity – 2013-03-16 00:49:44

回答

1

您需要手动使WebView返回页面。只是return ing只是给你一个无用的方法,因为它不会做任何事情,只是返回。既然你推翻了超类方法,你看到一个“非工作按钮”

WebView mainWebView一个实例变量:

public class CancerBank extends Activity { 
    WebView mainWebView; 
    //rest of code 

然后在的onCreate找到()分配给它适当的参考:

@Override 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     mainWebView = (WebView) findViewById(R.id.mainWebView); 
     //rest of code 

然后覆盖onBackPressed()并检查WebView是否可以返回。如果可以,让它回去通过goBack()

@Override 
public void onBackPressed() { 
    if (mainWebView.isFocused() && mainWebView.canGoBack()) { 
      mainWebView.goBack();  
    } 
} 
+1

我试过你的代码,但它实际上退出应用程序。我能做些什么来返回到上一页? – 2013-03-16 01:06:11

+1

@KelvinMaithya你加载了多个页面吗?目前,您的应用程序不应该实际退出任何内容。我故意省略'finish()'调用,所以你不能退出这个Activity。 – 2013-03-16 01:07:55

+0

nope ...只是导航1页,但仍然退出....确切的代码应该是什么样子 – 2013-03-16 01:15:15

0

您不必覆盖onBackPressed()可言,只是让操作系统处理这个给你。如果你把super.onBackPressed();在您的onBackPressed()方法中。你会得到正确的行为。但是,你不需要做任何事情。

0

可以使用onKeyDown(int keyCode, KeyEvent event)
if(keyCode == KeyEvent.KEYCODE_BACK)
方法来检测硬件返回键按下,做watever一步你喜欢做的事无论是出口还是走一步回