Виджет onUpdate, onReceive

Я инициализирую некоторые массивы в методе onUpdate () и после этого, используя намерение и кнопку, пытаюсь вызвать функцию onReceive (), которая работает нормально, но не может получить доступ к массивам, установленным в методе onUpdate (). Это почему? Эти массивы являются объектными переменными и объявляются публичными.

Я инициализирую некоторые массивы в методе onUpdate () и после этого, используя намерение и кнопку, пытаюсь вызвать функцию onReceive (), которая работает нормально, но не может получить доступ к массивам, установленным в методе onUpdate (). Это почему? Эти массивы являются объектными переменными и объявляются публичными.

Я инициализирую некоторые массивы в методе onUpdate () и после этого, используя намерение и кнопку, пытаюсь вызвать функцию onReceive (), которая работает нормально, но не может получить доступ к массивам, установленным в методе onUpdate (). Это почему? Эти массивы являются объектными переменными и объявляются публичными. Я что-то упустил?

package net.aerosoftware.widgettest;

import java.util.HashMap;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.RemoteViews;

public class WidgetTest extends AppWidgetProvider {

    public static String ACTION_WIDGET_RECEIVER = "ActionReceiverWidget";
    public HashMap<Integer, String> channelsImages;

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) 
    {
        Log.e("UPDATE", "Start");   
        RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);

        channelsImages = new HashMap<Integer, String>();
        channelsImages.put(0, "one");
        channelsImages.put(1, "two");

        Intent active = new Intent(context, WidgetTest.class);
        active.setAction(ACTION_WIDGET_RECEIVER);       
        PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 0, active, 0);
        remoteViews.setOnClickPendingIntent(R.id.buttonclick, actionPendingIntent);

        super.onUpdate(context, appWidgetManager, appWidgetIds);
        appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
        Log.e("UPDATE", "End");
    }

    @Override
    public void onReceive(Context context, Intent intent) 
    {
        Log.e("RECEIVE", "Start 2");
        if (intent.getAction().equals(ACTION_WIDGET_RECEIVER)) 
        {
            try
            {
                Log.e("SIZE", "Size Of channel array: "+channelsImages.size());
            }
            catch(Exception e)
            {
                Log.e("ON_RECIEVE_ERROR", " "+e.getMessage());
            }
        }
        super.onReceive(context, intent);
        Log.e("RECEIVE", "End");
    }

}
6
задан dfilkovi 9 August 2010 в 11:19
поделиться