Activity和Fragment之间如何进行回调?

2024-01-04

我的活动中有这个界面。

public interface LogoutUser {
    void logout();
}

我的片段实现了这个接口,所以在我的片段中,我有这个:

@Override
public void logout() {
    // logout
}

在我的活动中我打电话

mLogoutUser.logout();

Where mLogoutUser是 LogoutUser 接口类型。

我的问题是mLogoutUser为空的对象。如何初始化它?

谢谢你!


正如我在评论中所说,我使用以下方法解决了这个问题onAttach方法在我的片段中,但这样你必须在片段中声明回调字段(在本例中为 mLogoutUser ),并以这种方式初始化它:

public class MyFragment extends ListFragment {
    LogoutUser mLogoutUser;

    // Container Activity must implement this interface
    public interface LogoutUser {
        public void logout();
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);

        // This makes sure that the container activity has implemented
        // the callback interface. If not, it throws an exception
        try {
            mLogoutUser = (LogoutUser) context;
        } catch (ClassCastException e) {
            throw new ClassCastException(context.toString()
                    + " must implement LogoutUser");
        }
    }

    ...
}

更多信息在与其他片段通信 http://developer.android.com/training/basics/fragments/communicating.html.


但如果您的情况是活动中声明的字段,您可以使用onAttachFragment您的活动中的方法以这种方式初始化您的侦听器字段:

@Override
public void onAttachFragment(Fragment fragment) {
    super.onAttachFragment(fragment);

    mLogoutUser = (LogoutUser) fragment;
}

此外,您还可以使用事件总线在片段和活动之间进行通信。一个选项是奥托图书馆 http://square.github.io/otto/,来自广场。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Activity和Fragment之间如何进行回调? 的相关文章

随机推荐

  • Ansible:在角色目录中的目录中调用角色的剧本

    我想塑造我的 ansible 角色和剧本的目录结构 目前我有一个像这样的目录结构 group vars all group one group vars yml group vault yml host vars server1 yml p
  • 如何创建 GS1 DataBar Expanded 条形码?

    我需要创建一个GS1 DataBar Expanded RSS Expanded 条形码使用Code128字体或简单的二进制条形码字体 我知道如何使用应用程序标识符或创建校验和 但我不知道如何对数据进行编码GS1 DataBar Expan
  • Eigen 中的自定义标量类型

    我目前正在尝试设置一个自定义标量类型以与 Eigen3 库一起使用 atm 它是一个简单的包装器double 我已关注https eigen tuxfamily org dox TopicCustomizing CustomScalar h
  • 如何关闭 Cocoa 应用程序中的键盘声音?

    我的方法有问题OpenGL可可应用程序 每次keyUp KeyDown事件被触发 系统声音正在播放 我如何为我的应用程序禁用此逻辑 我有一种不好的预感 由于某种奇怪的原因 我的应用程序可能会将按键视为错误并播放系统警报声音 请帮忙 添加到您
  • 如何让 Python 使用 Mac OS TrustStore 中的 CA 证书?

    我需要在公司内部网上使用自定义根证书并将它们加载到 Mac OS TrustStore KeyChain 中确实解决了所有浏览器和 GUI 应用程序的问题 看来它甚至可以与以下版本一起使用curl随 Mac OS X 一起提供 但它不适用于
  • Google App Engine 的 Memcache (Java) 是全局缓存吗?

    我是 Google App Engine 的新手 最近几天我一直在使用 GAE 的 Memcache 来存储数据来构建一个应用程序 根据我的初步发现 GAE 的 Memcache 似乎不是全局的 让我进一步解释一下 我知道对 GAE 的不同
  • WSS 在 http 上工作吗?

    是否可以通过 http 建立 wss 协议 我在论坛上读到 ws 可以与 http 一起使用 但是 wss 只能与 https 一起使用吗 真的吗 因为我试图在本地主机上的 wamp 上测试它 但不起作用 ws告诉 WebSocket 客户
  • 如何在 Xcode 中创建可重用代码包?

    我正在开发一个 iPhone 应用程序 必须解析 xml 文件才能将它们放入数据库中 我还将在我的应用程序中使用相同的 xml 解析器 以便用户可以导入自己的数据 我想知道如何将这些 xml 解析器提取到捆绑包或库中 以便我可以在我的 iP
  • 如何使用 Android 将 .pdf .doc .txt 文件上传到服务器(mysql 数据库)

    我在将文件上传到服务器时遇到一些困难 我需要知道使用名称值对上传文件的完整代码 听到的是我的 android 代码 我只得到我的文件路径 如何将其上传到服务器 引用为 nameValuePairs add new BasicNameValu
  • Backbone.js `listento` 不会针对过滤后的集合触发

    listento仅针对全局集合触发 而不是我在创建视图时传递给视图的集合 例如 var MyView Backbone View extend initialize function this listenTo notes add this
  • 如何在浏览器中录制声音?

    我需要用户在浏览器上录制他们的声音 然后自动将生成的 mp3 上传到网络服务器 我认为用户按下一个大的开始记录 停止记录按钮来执行此操作 然后 这会将文件保存在用户硬盘上 然后它会被有效地压缩并自动通过 ftp 传输到网站 是否可以使用 A
  • 有条件地通过管道传输到 Out-Null

    我正在编写一个 PowerShell 脚本msbuild一堆解决方案 我想计算有多少解决方案构建成功 有多少解决方案失败 我还想查看编译器错误 但仅限于第一个失败的错误 我假设其他错误通常也会出现类似的错误 并且我不想弄乱我的输出 我的问题
  • MySQL:“您的 SQL 语法有错误...靠近 'desc) VALUES ('Idea','Description')'”[重复]

    这个问题在这里已经有答案了 我正在尝试让 MySQL 为我的表单提交工作 当我尝试插入表时遇到问题 当我将信息放入表单并单击 提交 时 在本例中 一个字段中的信息为 想法 另一个字段中的信息为 描述 我收到以下响应 您的 SQL 语法有错误
  • 如何将 React 组件的 props 传递给样式组件

    我正在尝试根据以下内容设置样式组件的高度props它所在的 React 组件的名称 我尝试了以下方法 const Styled styled div height props gt props height class Parent ext
  • Camel-SQL 为什么使用 StreamList 似乎会加载所有 ResultSet?

    Hi 我想做什么 我目前正在开发一个 ESB 项目 apache camel spring boot 2 其中我读取了一个包含超过 100 000 000 行的 MySQL 表 我一次清空该表 1 行 转换该行并将其发送到另一个数据库 我怎
  • 如何解决使用CMAKE 3.4.1和VS2015编译带有额外模型的opencv3.0时找不到包含文件的问题

    使用 CMAKE 3 4 1 和 VS2015 构建 OPENCV 3 0 时 VS2015出现以下错误 error C2264 std tuple
  • 在子目录中安装 django

    我在 Ubuntu 14 上运行 apache2 服务器 现在我想配置 Apache 与 mod wsgi 一起使用 以便在 www abc com lab 等域的子目录上运行 Django 但我总是无法做到这一点 顺便说一下我已经成功安装
  • 交叉编译:特殊的交叉编译器还是只是带选项 -march 的 gcc?

    我需要在Linux机器上为Raspberry PI 3 编译一个程序 并且代码必须符合c 17标准 官方工具链已经过时 并且缺少 c 17 编译选项 我现在可以看到的两个解决方案是 1 gcc有一个选项 march 其描述如下 https
  • 在 HTML 中使用 SVG 绘制新月

    是否可以在 HTML 中使用 SVG 绘制新月 我一直在尝试W3学校 http www w3schools com svg 但我没有看到这样的例子 我不需要您在 新月 的典型谷歌图像中看到的任何阴影 只需一个实心边框新月 您可以绘制带有两个
  • Activity和Fragment之间如何进行回调?

    我的活动中有这个界面 public interface LogoutUser void logout 我的片段实现了这个接口 所以在我的片段中 我有这个 Override public void logout logout 在我的活动中我打