2013-05-21 44 views
0

我已經經歷了這麼多stackoverflow回答了這個問題,但沒有爲我工作。我想要android後退按鈕來控制webview歷史記錄。每當我點擊模擬器中的後退按鈕,應用程序就會關閉。創建後退按鈕來控制WebView

這是我的活動,涉及到XML文件containting我的WebView(id爲myWebView):

package com.example.inncwrestling; 

import android.os.Bundle; 
import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.KeyEvent; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.Toast; 

public class BrandsActivity extends Activity { 

    WebView myWebView; 

    @SuppressLint("SetJavaScriptEnabled") 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.iframe_brands); 

     WebView myWebView = (WebView) findViewById(R.id.myWebView); 
    myWebView.setWebViewClient(new WebViewClient()); 
     WebSettings webSettings = myWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     myWebView.loadUrl("http://www.wwe.com"); 

    } 

    public class myWebClient extends WebViewClient 
    { 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      // TODO Auto-generated method stub 

      view.loadUrl(url); 
      return true; 

     } 
    } 

    // To handle "Back" key press event for WebView to go back to previous screen. 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) 
    { 
    if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) { 
     myWebView.goBack(); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 

    } 

    /*Open SettingsActivity**/ 
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case R.id.menu_settings: 
     Toast.makeText(this, "Settings", Toast.LENGTH_SHORT) 
      .show(); 
     startActivity(new Intent(this, SettingsActivity.class)); 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 


} 

我一直在尋找了兩天的解決方案,我開始覺得我必須查看UberSocial等應用的來源。

我真的需要幫助,如果它不是一個問題,用我的XML的WebView ID 'myWebView'

+0

這個,你只需點擊您的WebView任何鏈接?當你的活動第一次開始時,歷史中將沒有頁面,因此'webView.canGoBack()'將是錯誤的,這意味着你後退按鈕將關閉活動。在按下後退按鈕之前,您必須點擊webview中的幾個鏈接才能創建頁面歷史記錄。 – FoamyGuy

回答

0

希斯, 你已經做了非常精細的工作,除了這

的WebView myWebView =(的WebView) findViewById(R.id.myWebView);

在這裏你不必再用WebView聲明myWebView。簡單使它成爲

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

現在你會看到你想要的運作方式。

0

當你點擊後退按鈕,onBackPressed()被調用你的活動。這會在任何onKey事件之前被調用。嘗試覆蓋此方法。

onBackPressed

運行時