簡體   English   中英

小部件onReceive不會遞增int

[英]Widget onReceive doesnt increment int

我目前正在學習Android中的小部件。 我想增加計數器值,但是當我單擊小部件時,它將其從0增加到1,然后停止增加它。 我的onRecieve方法工作正常。 這是我的代碼:

public static CheckDate CheckDate;
public static EventList EventList;

public static String EVENT_CLICK = "EventClick";
public String msg;

public RemoteViews rviews;
public AppWidgetManager manager;
public Context cntxt;
public Intent intnt;
public int[] ids;

public int counter = 0;

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){
    super.onUpdate(context, appWidgetManager, appWidgetIds);

    CheckDate = new CheckDate();
    EventList = new EventList();

    manager = appWidgetManager;
    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
    ids = appWidgetIds;

    Intent intent = new Intent(context, DayWidget.class);
    intent.setAction(EVENT_CLICK);
    intent.putExtra("msg", "change");

    PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);

    views.setOnClickPendingIntent(R.id.Event, actionPendingIntent);

    CheckDate.Check();

    views.setTextViewText(R.id.Today, CheckDate.Today);
    views.setTextViewText(R.id.Event, String.valueOf(counter));

    manager.updateAppWidget(ids, views);
}

public void UpdateWidget(){
    Bundle extras = intnt.getExtras();
    if(extras!=null) {
        AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(cntxt);
        ComponentName AppWidget = new ComponentName(cntxt.getPackageName(), DayWidget.class.getName());
        int[] appWidgetIds = appWidgetManager.getAppWidgetIds(AppWidget);

        rviews = new RemoteViews(AppWidget.getPackageName(), R.layout.widget_layout);
        counter ++;
        rviews.setTextViewText(R.id.Event, String.valueOf(counter));

        appWidgetManager.updateAppWidget(appWidgetIds, rviews);
    }
}

public void onReceive(Context context, Intent intent){
    intnt = intent;
    cntxt = context;

    if(EVENT_CLICK.equals(intent.getAction())){
        try{
            msg = intent.getStringExtra("msg");
        }catch(NullPointerException e){
            e.printStackTrace();
        }
        UpdateWidget();
        Toast toast = Toast.makeText(cntxt, "OnClick", Toast.LENGTH_LONG);
        toast.show();
    }
    super.onReceive(context, intent);
}

使您的public int counter = 0; staticpublic static int counter = 0; 或將其保存為共享首選項

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM