android - 带有 fragment 的后退导航 WebView

标签 android webview android-webview

我确实看过每一个关于让后退按钮与 fragment 内的 WebView 一起工作的问题,但似乎无法让它在我的情况下工作。

我目前正在尝试获取 blackbelt's回答工作,但我的应用程序只是在我按下后退按钮后关闭。

任何帮助都会很棒,谢谢。

public class MainActivity extends BaseActivity {

private Fragment FragmentArchietecture = new FragmentShakira();

WebView webview;

private Fragment mContent;

public MainActivity() {
    super(R.string.app_name);

}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (savedInstanceState != null)
        mContent = getSupportFragmentManager().getFragment(
                savedInstanceState, "mContent");
    if (mContent == null)
        mContent = new FragmentShakira();

    setContentView(R.layout.content_frame);
    getSupportFragmentManager().beginTransaction()
            .replace(R.id.content_frame, FragmentArchietecture, "webby")
            .commit();

    setBehindContentView(R.layout.menu_frame);
    getSupportFragmentManager().beginTransaction()
            .replace(R.id.menu_frame, new RandomList()).commit();

    ActionBar bar = getSupportActionBar();
    bar.setTitle(R.string.app_name);

    getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    setSlidingActionBarEnabled(true);

}

@Override
public void onBackPressed() {
    Fragment webview = getSupportFragmentManager().findFragmentByTag(
            "webby");
    if (webview instanceof FragmentShakira) {
        boolean goback = ((FragmentShakira) webview).canGoBack();
        if (!goback)
            super.onBackPressed();
    }
}

 }

fragment :

public class FragmentShakira extends SherlockFragment {

static WebView webview;
String TAG = "webby";

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater
            .inflate(R.layout.fragmentwebview, container, false);

    WebView webview = (WebView) view.findViewById(R.id.webView1);
    webview.getSettings().setJavaScriptEnabled(true);
    webview.setWebViewClient(new WebViewClient());
    webview.loadUrl("https://www.google.co.uk/");

    return view;

}

public boolean canGoBack() {
    return webview != null && webview.canGoBack();
}

}

最佳答案

它应该可以工作。如果可以,不要忘记将消息传递给 fragment 以返回

if (!goback)
     super.onBackPressed();
else
     ((FragmentShakira) view).goBack();

关于android - 带有 fragment 的后退导航 WebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23157995/

相关文章:

android - View 的屏幕截图与 View 的大小不同吗?

java - 如何从 Webview Javafx 获取元素

flutter - Flutter Web 应用程序的 Web View

android - Webview 在右侧添加空白

javascript - 我可以将 Javascript 代码注入(inject) Chrome 自定义选项卡吗

android - 日历日期选择器

崩溃后 Android 小部件无响应/不会更新

android - 发送带有多个参数的多部分/表单请求?

android - WebView 不显示内容

android - 如何在 WebView 中获取 POST 请求的 JSON 响应?