0

我遇到了这个问题,我在 Activity A 中有一个处理程序,用于根据 Message.what 属性显示一些消息,好的,到目前为止,我得到了由 Activity A 启动的第二个 Activity(Activity B),我需要来自 Activity A 的相同处理程序在 Activity B 上使用它(我尝试了很多东西并用谷歌搜索,但什么也没有)我最终将 A 上 Handler 的代码复制到 B,但我真的知道这是错误的(不确定是否有必要处理程序),在这里我将发布一些我找到并尝试过的解决方案:

静态变量:访问父活动的实例?,它可以工作,但有时静态成员会因为类不再加载而变为 null,因为有些人说这可能会导致一些关于静态成员留在内存中的泄漏我对 Activity 状态做了一些技巧(将其设置为 null 时Activity A 调用 onDestroy,在 Activity A 的 onResume 和 onCreate 方法上设置引用“静态变量”=this,在此之后,当我们丢失加载的类时,代码仍然在“静态变量”处出现预期的 NullPointerException。

我尝试的另一件事是 MyOwnHandler(由我扩展 Handler 并实现 Serializable 创建的一个类,试图通过 Intent.putExtra 传递它),但是当我想到这个想法时,我注意到 Handler 有一些它的 final 方法。

对这个问题有什么建议吗?我想将 Activity A 上的 Handler 重用到 Activity B,提示:如果我在 Activity B 代码中获得了 Activity A 的确切运行实例,则可以这样做,如果需要一些示例,我可以带来一些示例,以防万一它们是绝对必要的。

编辑:根据需要。

private  Handler mHandler = new Handler() {
        public void handleMessage(Message msg) {
            Toast toast;
            switch (msg.what) {

            case 3:
                toast = Toast.makeText(getBaseContext(),
                        "The user is already saved.", Toast.LENGTH_LONG);
                toast.setGravity(Gravity.CENTER_HORIZONTAL
                        | Gravity.CENTER_VERTICAL, 0, 0);
                toast.show();
                break;
            case 2:
                toast = Toast.makeText(getBaseContext(),
                        "The entered e-mail couldn't be found in database.",
                        Toast.LENGTH_LONG);
                toast.setGravity(Gravity.CENTER_HORIZONTAL
                        | Gravity.CENTER_VERTICAL, 0, 0);
                toast.show();
                break;
}
}
};

这个 Handler 成员是私有的,可以是公共的或默认的,但仍然不相关。好吧,假设这段代码在活动 A 中,我想对活动 B 使用相同的确切代码,活动 B 由 A 通过 Intent 启动,我今天正在尝试@pskink 答案,似乎这就是解决方案,无论如何我d 仍在听命题。

问候。

4

1 回答 1

0

您尝试做的事情可能可以通过使用 Messenger http://developer.android.com/reference/android/os/Messenger.html来完成

于 2013-05-09T20:43:24.477 回答