簡體   English   中英

片段WebView后退按鈕不起作用

[英]Fragment webview back button not working

在菜單中的navigationDrawer ,單擊“搜索”,它將在一個fragment打開特定的webview 工作正常,但是當我按該webview -而不是最后訪問的webscreen它返回到我的主要fragment 我該如何解決? 我在這里提供fragment Java文件。 請提及需要解決的其他任何代碼(如果需要)


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;
}

}

我認為,當您按片段中的“后退”按鈕時,我們需要在Activity中進行處理,

您需要首先在您的主要活動中 覆蓋 onBackPressed()方法,該方法具有片段,並在Google片段中全局分配帶有公共視圖的 Webview

注意 :當您添加或替換片段時,請繼續添加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();
    }
}
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. 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM