我试图使用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)的注册侦听器(读取:receiver)未被托管它的组件实例化的结果.
检查你想对这个广播做出反应的事情实际上已经在正确的时候被实例化了(可能是主机活动/片段).