1

onReceive() でクリックされたウィジェットの ID を取得できません。常に 0 を返します。これが私のコードです。

@Override
    public void onReceive(Context context, Intent intent) {

        if (intent.getAction().equals(WIDGET_BUTTON)) {
            int widgetId = intent.getIntExtra( AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); 

            log("WID ID" + widgetId);

Android Developers Docs からコードを取得しましたが、なぜ機能しないのかわかりません..


答え:

寂しい:

AppWidgetManager mgr = AppWidgetManager.getInstance(context);

したがって、私のコードは次のようになります。

@Override
public void onReceive(Context context, Intent intent) {

    AppWidgetManager mgr = AppWidgetManager.getInstance(context);
    RemoteViews views = new RemoteViews(context.getPackageName(),
            R.layout.widget_main);




    if (intent.getAction().equals(WIDGET_BUTTON)) {
        Bundle extras = intent.getExtras();     
        int widgetId = 0;

        if (extras != null && extras.containsKey(AppWidgetManager.EXTRA_APPWIDGET_ID)) 
            widgetId = intent.getIntExtra(mgr.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); 
            log("1 - WID ID" + widgetId);
4

1 に答える 1