我正在尝试将localbroadcastmanager用于我的自定义意图。
似乎它对意图非常挑剔,如果我这样发送意图:
在myintents.java中,我声明
public static final String LOCATION_UPDATE = "com.example.myapp.location_update";
稍后在广播发件人中我会:
Intent intent = new Intent(MyIntents.LOCATION_UPDATE);
localBroadcastManager.sendBroadcast(intent);
然后我得到一个例外:
05-05 02:23:29.914: E/AndroidRuntime(6952): FATAL EXCEPTION: main
05-05 02:23:29.914: E/AndroidRuntime(6952): java.lang.NullPointerException
05-05 02:23:29.914: E/AndroidRuntime(6952): at android.support.v4.content.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:297)
05-05 02:23:29.914: E/AndroidRuntime(6952): at android.support.v4.content.LocalBroadcastManager.access$000(LocalBroadcastManager.java:46)
05-05 02:23:29.914: E/AndroidRuntime(6952): at android.support.v4.content.LocalBroadcastManager$1.handleMessage(LocalBroadcastManager.java:116)
05-05 02:23:29.914: E/AndroidRuntime(6952): at android.os.Handler.dispatchMessage(Handler.java:99)
但是如果我使用显式字符串
Intent intent = new Intent("my-intent");
一切正常。
怎么了?为什么我不能在另一个类中定义意图名称?
最佳答案
我刚碰到这个。npe是您正在触发的事件(myintents.location_update)的注册侦听器(read:receiver)未被承载它的组件实例化的结果。
检查您要响应此广播的内容是否已在正确的位置被实例化(可能是宿主活动/片段)。