OnClickListener bei einem Widget Button

  • 1 Antworten
  • Letztes Antwortdatum
kukuk

kukuk

App-Anbieter (kostenlos)
37
Ich bastel mir gerade ein Widget und steh vor einem Problem, welches ich nicht gelöst bekomme.
Ich habe eine ganz kleines Widget, das erstmal nur 1 Sache können soll.

Es ist ein Button vorhanden mit dem Text Starten und wenn man drauf klickt soll der umswitchen auf Anhalten und andersherum genauso.
Ich komme da nicht weiter.
Kann mir jemand helfen? Vielen dank schonmal im vorraus.
Das Layout heißt WidgetDemo

Hab folgenden Code:
MyWidgetProvider.java
Code:
package com.arbeitszeit_kalkulator;
import com.arbeitszeit_kalkulator.R;

import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.widget.RemoteViews;

/**
 * Created by Jacek Milewski
 * looksok.wordpress.com
 */

public class MyWidgetProvider extends AppWidgetProvider {
    public static String WIDGET_BUTTON = "MY_PACKAGE_NAME.WIDGET_BUTTON";
    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
            int[] appWidgetIds) {

        RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.activity_widget_demo);
        remoteViews.setOnClickPendingIntent(R.id.widget_button, buildButtonPendingIntent(context));
        
        
        
        Intent intent = new Intent(WIDGET_BUTTON);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        
        remoteViews.setOnClickPendingIntent(R.id.widget_button, pendingIntent );
        
        
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.activity_widget_demo);
        
        if (!Global.stempeluhr_widget){
            views.setTextViewText(R.id.widget_button, "Anhalten");
            appWidgetManager.updateAppWidget(appWidgetIds, views);
        }else{
            views.setTextViewText(R.id.widget_button, "Starten");
            appWidgetManager.updateAppWidget(appWidgetIds, views);       
            }
        
        

        pushWidgetUpdate(context, remoteViews);
        
        
            }
        
    

    public static PendingIntent buildButtonPendingIntent(Context context) {
        Intent intent = new Intent();
        intent.setAction("my.package.ACTION_UPDATE_WIDGET");
        return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    }

    public static void pushWidgetUpdate(Context context, RemoteViews remoteViews) {
        ComponentName myWidget = new ComponentName(context, MyWidgetProvider.class);
        AppWidgetManager manager = AppWidgetManager.getInstance(context);
        manager.updateAppWidget(myWidget, remoteViews);        
        
       
    }
}
MyWidgetIntentReceiver
Code:
package com.arbeitszeit_kalkulator;

import com.arbeitszeit_kalkulator.R;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Button;
import android.widget.RemoteViews;
import android.widget.TextView;
import android.widget.Toast;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;



/**
 * Created by Jacek Milewski
 * looksok.wordpress.com
 */


public class MyWidgetIntentReceiver extends BroadcastReceiver {
    public static String WIDGET_BUTTON = "MY_PACKAGE_NAME.WIDGET_BUTTON";
    private static int clickCount = 0;

    

    
    @Override
    public void onReceive(Context context, Intent intent) {
        
        RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.activity_widget_demo);
        
        remoteViews.setTextViewText(R.id.widget_button, "Your text");

        
    
        if(intent.getAction().equals("my.package.ACTION_UPDATE_WIDGET")){
            updateWidgetPictureAndButtonListener(context);
        }
        
    }

    private void updateWidgetPictureAndButtonListener(Context context) {
        RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.activity_widget_demo);
        //remoteViews.setImageViewResource(R.id.widget_image, getImageToSet(null));
        
        
        
        //REMEMBER TO ALWAYS REFRESH YOUR BUTTON CLICK LISTENERS!!!
        remoteViews.setOnClickPendingIntent(R.id.widget_button, MyWidgetProvider.buildButtonPendingIntent(context));
        
        MyWidgetProvider.pushWidgetUpdate(context.getApplicationContext(), remoteViews);
        
        
        
        
        
        
    
    }

    private int getImageToSet(Context context) {
        clickCount++;
        if (!Global.stempeluhr_widget){
            Global.stempeluhr_widget = true;
            
            }else{
                Global.stempeluhr_widget = false;    
            }
        
        
            return clickCount % 2 == 0 ? R.drawable.me : R.drawable.wordpress_icon;
    }

    
}
 
Zuletzt bearbeitet:
Habs gerade hin bekommen.

Manchmal muss man ne Pause einlegen und dann fällt einem was ein und dann läufts^^.
 
Zurück
Oben Unten