【问题标题】:Calling another function from another class within the same main class in Android在 Android 的同一个主类中从另一个类调用另一个函数
【发布时间】: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


【解决方案1】:

错误在我认为的功能中,与内容解析器有关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 2023-04-04
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多