【问题标题】:Use capacitive Back button to goBack(); in fragment activity in eclipse使用电容后退按钮 goBack();在eclipse中的片段活动中
【发布时间】:2014-01-23 12:10:49
【问题描述】:

我已经构建了一个新应用程序,在该应用程序中我有 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

【问题讨论】:

  • 什么样的错误?你可以给他们看吗?
  • AdminM.Fragment2 类型的 onBackPressed() 方法必须重写或实现超类型方法

标签: java android eclipse android-fragments android-activity


【解决方案1】:

您得到“AdminM.Fragment2 类型的 onBackPressed() 方法必须覆盖或实现超类型方法”,因为您添加了 Override 注释,但 Fragment 中没有 onBackPressed 方法。您只能在 Activity 中覆盖 onBackPressed。 您可以查看ActivityFragment 文档,了解可以覆盖哪些方法以及不能覆盖哪些方法。

正确的方法是每次在访问之前从 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;
}

【讨论】:

  • 对不起,这可能是一个愚蠢的问题,但你能告诉我应该把这个活动部分放在哪里!
  • 有2个错误1:fragmentManager无法解析2:方法onBackPressed()未定义WebView类型
  • @user2966615 你会得到错误,因为你必须修改代码。创建一个 fragmentManager 字段并将 fragmentId 替换为您的实际 Fragment id。您引用的片段应称为 WebViewFragment 或将“WebViewFragment”替换为您的实际片段名称。由于您有标签,因此您必须处理片段是否可见才能正确使用后退按钮,但这是一个完全不同的故事。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-02
  • 2012-12-28
  • 2011-12-18
  • 2016-10-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多