【发布时间】:2013-06-20 09:49:52
【问题描述】:
我有一个主类,即
Class A extends BroadcastReceiver {
ClassB hello = new ClassB
Public void onReceive(){
// Value obtained from Method in Class B
String Message = hello.2ndFunction()
}
Class B extends Activity{
public String 2ndFunction(){
// 2ndFunction Lines......
}
}
}
这是我的场景。但我得到了错误
06-20 09:17:02.584: E/AndroidRuntime(1076): FATAL EXCEPTION: main
06-20 09:17:02.584: E/AndroidRuntime(1076): java.lang.RuntimeException: Unable to start receiver com.example.timesheetcalculator.ReceiveSMS: java.lang.NullPointerException
06-20 09:17:02.584: E/AndroidRuntime(1076): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2383)
06-20 09:17:02.584: E/AndroidRuntime(1076): at android.app.ActivityThread.access$1500(ActivityThread.java:141)
06-20 09:17:02.584: E/AndroidRuntime(1076): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1310)
06-20 09:17:02.584: E/AndroidRuntime(1076): at android.os.Handler.dispatchMessage(Handler.java:99)
06-20 09:17:02.584: E/AndroidRuntime(1076): at android.os.Looper.loop(Looper.java:137)
06-20 09:17:02.584: E/AndroidRuntime(1076): at android.app.ActivityThread.main(ActivityThread.java:5041)
06-20 09:17:02.584: E/AndroidRuntime(1076): at java.lang.reflect.Method.invokeNative(Native Method)
06-20 09:17:02.584: E/AndroidRuntime(1076): at java.lang.reflect.Method.invoke(Method.java:511)
06-20 09:17:02.584: E/AndroidRuntime(1076): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
06-20 09:17:02.584: E/AndroidRuntime(1076): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
06-20 09:17:02.584: E/AndroidRuntime(1076): at dalvik.system.NativeStart.main(Native Method)
06-20 09:17:02.584: E/AndroidRuntime(1076): Caused by: java.lang.NullPointerException
06-20 09:17:02.584: E/AndroidRuntime(1076): at android.content.ContextWrapper.getContentResolver(ContextWrapper.java:99)
06-20 09:17:02.584: E/AndroidRuntime(1076): at com.example.timesheetcalculator.ReceiveSMS$CallLogsExtracter.CallLogs(ReceiveSMS.java:75)
06-20 09:17:02.584: E/AndroidRuntime(1076): at com.example.timesheetcalculator.ReceiveSMS.onReceive(ReceiveSMS.java:47)
06-20 09:17:02.584: E/AndroidRuntime(1076): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2376)
可能是什么问题?
【问题讨论】:
-
首先你的错误日志摘录太短,用stacktrace显示完整的错误信息,其次,自己创建一个活动对象通常是个坏主意
-
试试这样 "ClassB hello = ClassB.getInstance(this);"
-
也许尝试将他的方法定义为:
@Override public abstract void onReceive (Context context, Intent intent)? -
@g00dy 除了“抽象”,这是正确的
-
如果“ClassB hello = new ClassB”这一行是为了创建一个新的活动实例,我认为事情进展不太顺利。您不创建活动,当您要求它启动一个活动时,Android 会代表您创建活动。我通常将事件侦听器创建为活动内部的匿名内部类,而不需要处理广播事件。
标签: android methods android-activity broadcastreceiver