gpt4 book ai didi

android - 制作 sendBroadcast 时无法实例化嵌套类(扩展 broadcastReceiver)

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:54:41 24 4
gpt4 key购买 nike

我正在 Android 中开发应用程序,遇到一个问题,即 Android 框架在尝试实例化嵌套类时抛出 java.lang.InstantiationException。这是场景。

  1. 类 A 扩展 Activity,嵌套类 B 扩展 BroadcastReceiver:

    public class A extends Activity
    {
    public void onCreate(){
    ....};
    //Class B
    public class B extends BroadcastReceiver
    {
    public void onReceive(...)
    }
    }
  2. list 文件中的类声明: ....

抱歉缩进错误。只是找不到正确缩进带有这么多标签的代码的方法。

  1. 从服务广播:

Intent updateIntent = new Intent();
updateIntent.setAction("desired_action");
sendBroadcast(accountPropertyUpdateIntent);

有了上面给出的所有东西,代码就被编译了,但是当在设备上运行时,在调用广播之后,我得到一个 InstantiationException 说不能实例化 pacakage.A$B,dalvik 说没有找到。

现在整个场景适用于 Android 2.2,但不知为何在 2.1 上失败了。

我不知道到底发生了什么。我需要帮助。也许我缺少一些基本的东西。

谁能帮帮我?提前致谢。

最佳答案

我自己终于对整个场景得出了合乎逻辑的结论。愚蠢到不去读 <receiver> developer.android.net 上的文档。它清楚地表明应用程序有两种方法可以获取广播。

There are two ways to make a broadcast receiver known to the system: 
One is declare it in the manifest file with this element.
The other is to create the receiver dynamically in code and register it with the
Context.registerReceiver() method.
See the BroadcastReceiver class description for more on dynamically created receivers.

我正在使用这两种方法。我的场景在 2.2 上也应该失败,因为那些接收器也是通过 list 注册的,它们应该被自动调用,但不知何故它没有(这仍然是一个谜)。

从 list 中删除所有接收器,只保留广播接收器的动态注册,现在代码像以前一样工作,没有异常(exception)。

感谢大家的帮助。 :)

关于android - 制作 sendBroadcast 时无法实例化嵌套类(扩展 broadcastReceiver),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4268720/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com