2013-05-21 96 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

运行时