2014-01-23 24 views
1

我有一個webview裏面的片段,並且我希望每當我按下後退按鈕時都可以通過導航歷史來控制它。在我的情況下,當我按下後退按鈕時,我離開webview,但我希望按下按鈕後,我將返回到存儲在導航歷史記錄中(離開webview之前)的狀態。如何在片段內控制webview中的導航歷史記錄

任何解決方案,請?我試過onKey但它不能解決我的問題。在這裏我的代碼:

public class FragmentAll extends Fragment implements 
     DialogInterface.OnCancelListener, DialogInterface.OnDismissListener, 
     OnDownloaExpodTerminated { 

    public static Fragment newInstance(Context context) { 
     FragmentAll f = new FragmentAll(); 
     return f; 
    } 

    private WebView myWebView; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     (((MainActivity) getActivity())).setActionBarTitle("Store"); 
     myWebView = (WebView) v.findViewById(R.id.webView1); 
     setWebview(); 
     v.setOnKeyListener(new OnKeyListener() { 
      @Override 
      public boolean onKey(View arg0, int arg1, KeyEvent arg2) { 
       // TODO Auto-generated method stub 
       if (arg1 == KeyEvent.KEYCODE_BACK && myWebView.canGoBack()) { 
        myWebView.goBack(); 
        return true; 
       } 
       return false; 
      } 
     }); 
     return v; 
    } 

    ... 

} 

回答

0

你必須讓你的片段類中的方法:

public void goBackWebview(){ 
    myWebview.goBack(); 
} 

現在,進入到這個片段連接Activity類並覆蓋onBackPressed():

@Override 
public void onBackPressed() { 
    //if webview has history 
    myFragment.goBackWebView(); 
} 
0

你需要管理的鏈接列表加載到你的web視圖。 你可以得到的URL這樣

web_des2.setOnTouchListener(new OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 

       if (event.getAction() == MotionEvent.ACTION_UP) { 
        HitTestResult hitTestResult = web_des2.getHitTestResult(); 

        if (hitTestResult != null) { 
         String url = hitTestResult.getExtra(); 

         if (url != null && url.startsWith("http://")) { 
              yourUrlList.add(url); 
              web_des2.loadUrl(url); 
         } 

        } 
        return true; 
       } 

       return false; 
      } 
     }); 

您可以檢查onBackPress如果你的列表不爲空,則得到的URL形式列表,並將其加載到網頁視圖,並從列表中刪除。 你可以使用Stack來存儲url,所以變得容易,你可以直接使用pop()和push()函數。如果喜歡比+1

1

,您可以嘗試

@Override 
public void onBackPressed() { 
    if (mWebView.canGoBack()) { 
     mWebView.goBack(); 
     return; 
    } 

    // Otherwise defer to system default behavior. 
    super.onBackPressed(); 
} 
相關問題