
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
MyWidgetIntentReceiver
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);
}
}
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: