我已经提供了一个服务来处理小部件中的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.NullPointerExceptionE / 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)
答案 0 :(得分:0)
您的问题是context
为空。您需要先将其分配给某些内容,然后才能使用它。或者,如果您在服务中,只需使用this
,因为服务是一个上下文。
然而,在您尝试这样的任何事情之前,听起来您需要更好地掌握基本的编程概念。阅读一些基本的Java教程,如these Oracle ones,或查看本question中提到的一些书籍或资源。
您尚未准备好尝试解决Android问题。从基础开始,从那里开始工作。