我开发了一个在线游戏的维基,一切都在我的应用程序上运行良好,但有一个很大的问题,当我按下后退按钮应用程序被杀死。
我的应用程序有带有片段的导航抽屉,当按下一个菜单时,它会加载片段并立即进行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上也有一些错误。
再次感谢你
答案 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)