2013-10-27 302 views
1

想知道如何让webview回去。Webview后退按钮

试着把webview放回新闻界,但它似乎与我的代码不起作用。不知道我是否启动它,仍然对此感到困惑。

也有可能摆脱webview中的滚动条?我发现一些关于它的帖子,但我仍然对如何准确地把它变成我的代码

package com.webapp.area956; 

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

public class MainActivity extends Activity { 





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

    WebViewClient yourWebClient = new WebViewClient() 

     { 
      // Override page so it's load on my view only 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) 
      { 
      // This line we let me load only pages inside Firstdroid Webpage 
      if (url.contains("area956") == true) 
       // Load new URL Don't override URL Link 
       return false; 

      // Return true to override url loading (In this case do nothing). 
      return true; 
      } 
     }; 

    String url = "http://www.area956.com"; 
    WebView view = (WebView) this.findViewById(R.id.webView1); 
    view.setWebViewClient(yourWebClient); 
    view.getSettings().setJavaScriptEnabled(true); 
    view.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 
    view.loadUrl(url); 

} 
public void onBackPressed(){ 

    if (WebView.canGoBack()) { 
      WebView.goBack();  
    } 
    else { 
      super.onBackPressed(); 
      finish(); 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

} 

回答

0

有无的WebView作为类成员

WebView view; 
@Override 
public void onCreate(Bundle savedInstanceState) { 

围栏然后初始化

view = (WebView) this.findViewById(R.id.webView1); 
view.setWebViewClient(yourWebClient); 
view.getSettings().setJavaScriptEnabled(true); 
view.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 
view.loadUrl(url); 

然后使用onKeyDown

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

您已在onCreate中声明WebView view并在那里初始化它。所以它成为onCreate的本地。

编辑:

您还可以使用onBackPressed为2.0

http://android-developers.blogspot.in/2009/12/back-and-other-hard-keys-three-stories.html

public void onBackPressed(){ 
    super.onBackPressed(); 
    if (view.canGoBack()) { 
      view.goBack();  
    } 
    else { 

      finish(); 
    } 
} 
+0

真棒!好耶!非常感谢,如果我提出另一个问题,允许在浏览器中打开外部网站。这是否与我的shouldoverrideurlloading是相反的? – user2923771

+0

您可以使用intent并提供url并在浏览器中打开链接。 – Raghunandan

+0

意图?我知道这是很多要问,但你也介意解释这一点? – user2923771