2011-07-07 3 views
0

WebViewのアプリを閉じる:戻るボタンそれはFullScreen.NoTitleBarとして実行され、以下のように私は、アプリケーションを持っている

「ラストURL」
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); 
} 
} 

がハンドルの向きの変更のために使用され、彼は同じページにユーザーを聞かせてナビゲート中。

しかし、私の問題は、ユーザーがいくつかのリンクをたどってから戻るボタンを押すと、アプリケーションはページを戻す代わりに閉じてしまうことです。どうすればそれを処理できますか?

答えて

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; 
    } 
} 
関連する問題