我已经构建了一个新应用程序,在该应用程序中我有3个带有webview的片段。基本上我想实现goBack();在电容式后退按钮上。我试过了
@Override
public void onBackPressed() {
webView.goBack();
return;
}
以及
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
webView.goBack();
return false;
}
return super.onKeyDown(keyCode, event);
}
但我最终得到了错误。所以任何人都可以帮助我这样做。谢谢 这是一个
public class AdminM extends FragmentActivity implements ActionBar.TabListener
答案 0 :(得分:0)
你得到“AdminM.Fragment2类型的onBackPressed()方法必须覆盖或实现超类型方法”,因为你添加了Override注释,但Fragment中没有onBackPressed方法。您只能在Activity中覆盖onBackPressed。 您可以查看Activity和Fragment文档,了解您可以覆盖的方法以及无法覆盖的方法。
正确的方法是在每次访问FragmentManager之前从FragmentManager中检索Fragment。这样您就可以确保使用正确的实例。如果Fragment为null,则表示没有附加。
活动
@Override
public void onBackPressed() {
final WebViewFragment fragment = (WebViewFragment) fragmentManager.findFragmentById(fragmentId);
if (fragment == null || !fragment.onBackPressed()) {
super.onBackPressed();
}
}
在Fragment中,创建一个方法,如果WebView返回则返回true,否则返回false。 每次检查webView是否为null,因为fragmen拥有自己的生命周期机制。
public boolean onBackPressed() {
if (webView != null && webView.canGoBack()) {
webView.goBack();
return true;
}
return false;
}