片段后退按钮中的WebView在按下时会杀死我的应用程序

时间:2014-12-31 16:51:50

标签: android jquery webview fragment

我开发了一个在线游戏的维基,一切都在我的应用程序上运行良好,但有一个很大的问题,当我按下后退按钮应用程序被杀死。

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

例 - >打开菜单 - >点击了#34;英雄" - >片段加载 - > Webview加载 - >显示的HTML菜单 - >用户按Backbutton - >片段重新加载 - >已加载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上也有一些错误。

再次感谢你

2 个答案:

答案 0 :(得分:0)

由于你处于片段状态,你不会被OnBackPressed覆盖 更简单的方法是使用下面的代码

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

答案 1 :(得分:0)

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