2013-03-16 83 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一步你喜歡做的事無論是出口還是走一步回