2011-07-07 121 views
0

我有一個應用程序,如下運行爲FullScreen.NoTitleBar:返回按鈕關閉的WebView應用

public class BrowserActivity extends Activity { 
private String lastUrl = "http://www.google.com"; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.main); 

    WebView web = (WebView) findViewById(R.id.webview); 

    WebSettings settings = web.getSettings(); 
    settings.setJavaScriptEnabled(true); 
    settings.setJavaScriptCanOpenWindowsAutomatically(false); 
    settings.setSupportMultipleWindows(false); 
    settings.setSupportZoom(false); 
    settings.setPluginsEnabled(true); 

    web.setWebViewClient(new WebViewClient() { 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      lastUrl = url; 
      view.loadUrl(url); 
      return true; 
     } 
    }); 
    web.setVerticalScrollBarEnabled(false); 
    web.setHorizontalScrollBarEnabled(false); 

    web.loadUrl(lastUrl); 
} 
} 

的「最後URL」用於手柄的方向變化,讓在同一頁,他是在用戶而導航。

但我的問題是,如果用戶按照一些鏈接,然後點擊返回按鈕,應用程序只是關閉,而不是返回一個頁面。我該如何處理?

回答

2

我通過處理返回並跟蹤用戶訪問的URL來解決這個問題。

public class BrowserActivity extends Activity { 
    private Stack<String> urls = new Stack<String>();; 

    private String lastUrl = "http://www.google.com/"; 
    private WebView web; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.main); 
     try { 
     web = (WebView) findViewById(R.id.webview); 

     WebSettings settings = web.getSettings(); 
     settings.setJavaScriptEnabled(true); 
     settings.setJavaScriptCanOpenWindowsAutomatically(false); 
     settings.setSupportMultipleWindows(false); 
     settings.setSupportZoom(false); 
     settings.setPluginsEnabled(true); 

     web.setWebViewClient(new WebViewClient() { 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       urls.push(lastUrl); 
       lastUrl = url; 
       return false; 
      } 
     }); 
     web.setVerticalScrollBarEnabled(false); 
     web.setHorizontalScrollBarEnabled(false); 

     web.loadUrl(lastUrl); 
    } 

    public boolean onKeyDown(int keyCode, KeyEvent evt) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      if (urls.size() > 0) { 
       lastUrl = urls.pop(); 
       web.loadUrl(lastUrl); 
      } else 
       finish(); 
      return true; 
     } 

     return false; 
    } 
} 
相關問題