在服务中使用意图的方法导致小部件到FC

时间:2011-02-10 19:00:00

标签: android service widget

我已经提供了一个服务来处理小部件中的onClick意图。但是当它被添加到屏幕时强制关闭,我无法找出原因。

这是导致FC的方法:

    public void onClick() {
    RemoteViews top=new RemoteViews(context.getPackageName(), layoutID);
    RemoteViews bottom=new RemoteViews(context.getPackageName(), layoutID);
    Intent clickintenttop=new Intent("android.tristan.widget.digiclock.CLICK1");
    Intent clickintentbottom=new Intent("android.tristan.widget.digiclock.CLICK2");
    PendingIntent pendingIntentClickTop=PendingIntent.getBroadcast(context, 0, clickintenttop, 0);
    PendingIntent pendingIntentClickBottom=PendingIntent.getBroadcast(context, 0, clickintentbottom, 0);
    bottom.setOnClickPendingIntent(R.id.BottomRow, pendingIntentClickBottom);
    top.setOnClickPendingIntent(R.id.TopRow, pendingIntentClickTop);
    int Top = appWidgetIds.length;
    int Bottom = appWidgetIds.length;
    for (int i=0; i<Top; i++)
    {
    appWidgetManager.updateAppWidget(appWidgetIds[i], top);
    }
    for (int j=0; j<Bottom; j++)
    {
    appWidgetManager.updateAppWidget(appWidgetIds[j], bottom);
    }
}

该方法是从onCreate()调用的。谁能把我推向正确的方向?

编辑:取自LogCat:

W / dalvikvm(22312):threadid = 1:线程退出时未捕获异常(group = 0x400259f8)

E / AndroidRuntime(22312):致命异常:主

E / AndroidRuntime(22312):java.lang.RuntimeException:无法创建服务android.tristan.widget.digiclock.IntentService:java.lang.NullPointerException

E / AndroidRuntime(22312):在android.app.ActivityThread.handleCreateService(ActivityThread.java:3140)

E / AndroidRuntime(22312):在android.app.ActivityThread.access $ 3300(ActivityThread.java:135)

E / AndroidRuntime(22312):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2202)

E / AndroidRuntime(22312):在android.os.Handler.dispatchMessage(Handler.java:99)

E / AndroidRuntime(22312):在android.os.Looper.loop(Looper.java:144)

E / AndroidRuntime(22312):在android.app.ActivityThread.main(ActivityThread.java:4937)

E / AndroidRuntime(22312):at java.lang.reflect.Method.invokeNative(Native Method)

E / AndroidRuntime(22312):at java.lang.reflect.Method.invoke(Method.java:521)

E / AndroidRuntime(22312):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)

E / AndroidRuntime(22312):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)

E / AndroidRuntime(22312):at dalvik.system.NativeStart.main(Native Method)

E / AndroidRuntime(22312):引起:java.lang.NullPointerException

E / AndroidRuntime(22312):在android.tristan.widget.digiclock.IntentService.onClick(IntentService.java:58)

E / AndroidRuntime(22312):在android.tristan.widget.digiclock.IntentService.onCreate(IntentService.java:40)

E / AndroidRuntime(22312):在android.app.ActivityThread.handleCreateService(ActivityThread.java:3125)

1 个答案:

答案 0 :(得分:0)

您的问题是context为空。您需要先将其分配给某些内容,然后才能使用它。或者,如果您在服务中,只需使用this,因为服务是一个上下文。

然而,在您尝试这样的任何事情之前,听起来您需要更好地掌握基本的编程概念。阅读一些基本的Java教程,如these Oracle ones,或查看本question中提到的一些书籍或资源。

您尚未准备好尝试解决Android问题。从基础开始,从那里开始工作。