Метод с намерениями в сервисе вызывает виджет для FC - PullRequest
0 голосов
/ 10 февраля 2011

Я создал сервис для обработки моих намерений 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: поток выходит с необработанным исключением (группа = 0x400259f8)

E / AndroidRuntime (22312): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: main

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): по адресу java.lang.reflect.Method.invokeNative (собственный метод)

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

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

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

E / AndroidRuntime (22312): в dalvik.system.NativeStart.main (собственный метод)

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 голосов
/ 11 февраля 2011

Ваша проблема в том, что context равно нулю. Вам нужно присвоить это чему-либо, прежде чем вы сможете его использовать. Или, если вы находитесь в службе, просто используйте this, поскольку служба - это контекст.

Однако, похоже, вам нужно гораздо лучше понять основные концепции программирования, прежде чем пытаться что-то подобное. Прочтите некоторые основные учебники по Java, например , эти Oracle , или ознакомьтесь с книгами или ресурсами, упомянутыми в этом вопросе

Вы еще не готовы попробовать заняться Android. Начните с основ, работайте оттуда.

...