4

I have a webview inside of a Fragment and when I click on a link it takes to to the next page, however clicking the back button does not take me back to the prior page. When I examine the canGoBack it is always false.

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState)
{
    gameDetailsActivity = (GameDetailsActivity)getActivity();

    Bundle args = getArguments();
    int type = args.getInt(ARG_OBJECT);
    View rootView = null;

    rootView = inflater.inflate(R.layout.gamedetailswebview,
            container, false);

    wv = (WebView) rootView.findViewById(R.id.WebViewGameDetails);

    wv.setWebViewClient(new WebViewClient());
    wv.getSettings().setJavaScriptEnabled(true);
    wv.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND);
    wv.getSettings().setBuiltInZoomControls(true); 
    wv.getSettings().setSupportZoom(true);
    wv.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);   
    wv.getSettings().setAllowFileAccess(true); 
    wv.getSettings().setDomStorageEnabled(true);

    switch (type)
    {
        case 1:
            wv.loadUrl(gameDetailsActivity.gameSummaryURL);
            break;
        case 2:
            wv.loadUrl(gameDetailsActivity.gameReportURL);
            break;
    }

    return rootView;
}

public boolean GoBack()
{
    if (wv.canGoBack())
    {
        wv.goBack();
        return true;
    }

    return false;
}

@Override
public void onBackPressed()
{
    int currentFragmentIndex = gameDetailsViewPager.getCurrentItem();

    if (currentFragmentIndex > 0)
    {
        Fragment webview = gameDetailsPagerAdapter
                .getItem(currentFragmentIndex);
        if (webview instanceof GameDetailsWebViewFragment)
        {
            if (!((GameDetailsWebViewFragment) webview).GoBack())
            {
                super.onBackPressed();
            }
        }
    }
}
4

1 回答 1

1

我认为你应该像这样wv.setWebViewClient(new WebViewClient()) 扩展WebViewClient、覆盖而不是你shouldOverrideUrlLoading()

        @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
于 2012-09-18T07:11:13.467 回答