【问题标题】:WebView in Fragment Back button kills my app when pressedFragment Back 按钮中的 WebView 在按下时会杀死我的应用程序
【发布时间】:2014-12-31 16:51:49
【问题描述】:

我为在线游戏开发了一个 wiki,一切都在我的应用程序上运行良好,但是当我按下后退按钮时,应用程序被杀死了。

我的应用程序有带有片段的导航抽屉,当按下菜单时,它会加载一个片段并立即加载一个 web 视图,在使用 DreamWeaver 生成的 Jquery 网页的 web 视图中,一切都很好,但是当用户按下 BACK 按钮时,我想要要重新加载的片段(返回所选菜单)

示例->打开菜单->点击“英雄”->加载片段->加载Webview->显示HTML菜单->用户按下后退按钮->重新加载片段->加载Web视图->加载HTML菜单。

我不知道我是否给你一个很好的例子,对不起,感谢你阅读本文。

片段代码:

public class HeroesFragment extends Fragment {

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

        View rootView = inflater.inflate(R.layout.heroes, container, false);
        WebView heroespage = (WebView) rootView.findViewById(R.id.heroeswiki);
        WebSettings webSettings = heroespage.getSettings();
        webSettings.setJavaScriptEnabled(true);
        heroespage.loadUrl("file:///android_asset/heroes/index.html");

        return rootView;
    }

}

我尝试了几种解决方案,但都没有成功:

public void onBackPressed () {
    if(wb != null) {
        if(wb.canGoBack()) {
             wb.goBack();
        } else {
             setContentView(R.layout.main);
             wb = null;
        }
    } else {
        super.onBackPressed();
    }
}

这个解决方案在 super.onBackPressed 和或 @Override 上给出错误也给了一些错误。

再次感谢您

【问题讨论】:

    标签: android jquery webview fragment


    【解决方案1】:

    因为你在 Fragment 中,你不会得到 OnBackPressed Overridden 更简单的方法是使用下面的代码

    @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_DOWN) {
                switch (keyCode) {
                case KeyEvent.KEYCODE_BACK:
                    if(wb.canGoBack()) {
                        wb.goBack();
                   } else {
                      setContentView(R.layout.main);
                      wb = null;
                   }                
                    return true;
                }
    
            }
            return super.onKeyDown(keyCode, event);
        }
    

    【讨论】:

    • 我收到此错误“错误:(43, 25)错误:找不到符号方法 setContentView(int)”,与 onKeyDown 相同;(我粘贴了您在返回下方给我的代码rootView; 关闭“}”后
    • @EdgarGonzalez 粘贴我的代码,例如 return rootView; } //在这里粘贴我的代码 }
    • 拜托我还有问题,我用当前的模组把代码上传到了Pastebin,还有一个截图。感谢您的宝贵时间pastebin.com/itqUmF2Ys18.postimg.org/ysk64wknd/Untitled.png
    • @EdgarGonzalez,请通过电子邮件 bhavikmehta5491@gmail.com 与我联系,以便我可以帮助您修复此代码,在这里回答很长
    【解决方案2】:

    @Bhavik 你能在这里给出这么长的答案吗,因为我坚持这个并且无法解决它。我在 setContentView 和 super.onKeyDown 上也遇到了错误... 我也对 onKeyDown 有疑问,Android Studio 说它不需要覆盖?!?我的 Android Studio 出了什么问题?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      相关资源
      最近更新 更多