2017-07-25 53 views
0

在我的navigationDrawer從菜單中,通過單擊搜索它將在fragment中打開特定的webview。工作正常,但當我按回webview - 而不是得到最後一次訪問webscreen它回到我的主要fragment。我該如何解決這個問題?我在這裏提供我的fragment java文件。請提及任何其他代碼需要(如果需要),以解決我的問題片段webview後退按鈕不起作用


public class GoogleFragment extends Fragment { 

public WebView mWebView; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View v = inflater.inflate(fragment_google, container, false); 
    mWebView = (WebView) v.findViewById(webview); 
    mWebView.loadUrl("https://google.com"); 

    // Enable Javascript 
    WebSettings webSettings = mWebView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    //improve webview performance 
    mWebView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH); 
    mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 
    mWebView.getSettings().setAppCacheEnabled(true); 
    mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
    webSettings.setDomStorageEnabled(true); 
    webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS); 
    webSettings.setUseWideViewPort(true); 
    webSettings.setSavePassword(true); 
    webSettings.setSaveFormData(true); 
    webSettings.setEnableSmoothTransition(true); 

    // Force links and redirects to open in the WebView instead of in a browser 
    mWebView.setWebViewClient(new WebViewClient()); 

    return v; 
} 

} 
+2

的可能的複製[如何添加網頁視圖 「返回」 功能裏面片段?](https://stackoverflow.com/questions/10631425/how-to-add-go-back-函數功能於網頁視圖的內部片段) –

回答

0

我認爲當你從片段按後退按鈕不是我們需要處理它的活動裏面,

您需要到第一覆蓋onBackPressed()在主要活動方法,該方法具有片段和全球分配網頁視圖與你的谷歌片段

注意市民:當您添加或更換片段不斷增加一個TAG,它可以用於獲取片段的實例有幫助的。

@Override 
    public void onBackPressed() { 
    Fragment fragment = 
    getFragmentManager().findFragmentByTag("google_fragment"); 
    if (fragment instanceof GoogleFragment) { 
     if (webView.canGoBack()) { 
      webView.goBack(); 
     } else { 
      super.onBackPressed(); 
     } 
    }else{ 
     super.onBackPressed(); 
    } 
} 
0
public class GoogleFragment extends Fragment { 

public WebView mWebView; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View v = inflater.inflate(fragment_google, container, false); 
    mWebView = (WebView) v.findViewById(webview); 
    mWebView.loadUrl("https://google.com"); 

    // Enable Javascript 
    WebSettings webSettings = mWebView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    //improve webview performance 


    mWebView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH); 

    mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 
    mWebView.getSettings().setAppCacheEnabled(true); 
    mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
    webSettings.setDomStorageEnabled(true); 
    webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS); 
    webSettings.setUseWideViewPort(true); 
    webSettings.setSavePassword(true); 
    webSettings.setSaveFormData(true); 
    webSettings.setEnableSmoothTransition(true); 

    // Force links and redirects to open in the WebView instead of in a browser 
    mWebView.setWebViewClient(new WebViewClient()); 

v.setFocusableInTouchMode(true); 
v.requestFocus(); 

v.setOnKeyListener(new View.OnKeyListener() 
{ 
@Override 
public boolean onKey(View v1, int keyCode, KeyEvent event) 
{ 
if(keyCode == KeyEvent.KEYCODE_BACK) { 


if(mWebView.canGoBack()) 
{ 
wView.goBack(); 
wView.getUrl(); 
} 


return true; 
} 
return false; 
} 
}); 
    return v1; 
} 
} 

Please try this code .it may help you.