this is my code...
String[] show = new String[2];
RemoteViews remoteViews;
public static String ACTION_WIDGET_CONFIGURE = "ConfigureWidget";
public static String ACTION_WIDGET_RECEIVER = "ActionReceiverWidget";
@Override
public void onUpdate( Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds )
{
show = getString();
remoteViews = new RemoteViews( context.getPackageName(), R.layout.widget );
remoteViews.setTextViewText( R.id.widget_title, show[0]);
remoteViews.setTextViewText( R.id.widget_textview, show[1]);
Intent configIntent = new Intent(context, SuitAuto.class);
configIntent.setAction(ACTION_WIDGET_CONFIGURE);
Intent active = new Intent(context, WordWidget.class);
active.setAction(ACTION_WIDGET_RECEIVER);
active.putExtra("msg", "Message for Button 1");
PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 0, active, 0);
PendingIntent configPendingIntent = PendingIntent.getActivity(context, 0, configIntent, 0);
remoteViews.setOnClickPendingIntent(R.id.update, actionPendingIntent);
remoteViews.setOnClickPendingIntent(R.id.Lilo, configPendingIntent);
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews );
}
private String[] getString() {
String[] hon = new String[2];
KamusWidget ad = new KamusWidget(null);
ad.open();
hon = ad.getwordday();
ad.close();
return hon;
}
@Override
public void onReceive(Context context, Intent intent) {
// v1.5 fix that doesn't call onDelete Action
final String action = intent.getAction();
if (AppWidgetManager.ACTION_APPWIDGET_DELETED.equals(action)) {
final int appWidgetId = intent.getExtras().getInt(
AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
if (appWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID) {
this.onDeleted(context, new int[] { appWidgetId });
}
} else {
// check, if our Action was called
if (intent.getAction().equals(ACTION_WIDGET_RECEIVER)) {
String msg = "null";
try {
msg = intent.getStringExtra("msg");
} catch (NullPointerException e) {
Log.e("Error", "msg = null");
}
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
} else {
// do nothing
}
super.onReceive(context, intent);
}
}
}
i just want to update widget_title and widget_textview when R.id.update is clicked it should run function getString to fetch string from other class so that, the new string can be pass to the textview...
any idea?
In the end of the onReceive
function you should be able to just create a RemoteView and update the widget:
ComponentName name = new ComponentName(context, WordWidget.class);
int[] ids = appWidgetManager.getAppWidgetIds(name);
if(ids != null && ids.length > 0){
RemoteView remoteViews = new RemoteViews( context.getPackageName(), R.layout.widget );
remoteViews.setTextViewText( R.id.widget_title, context.getString(R.id.new_widget_title));
remoteViews.setTextViewText( R.id.widget_textview, context.getString(R.id.new_widget_text));
Intent configIntent = new Intent(context, SuitAuto.class);
configIntent.setAction(ACTION_WIDGET_CONFIGURE);
Intent active = new Intent(context, WordWidget.class);
active.setAction(ACTION_WIDGET_RECEIVER);
active.putExtra("msg", "Message for Button 1");
PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 0, active, 0);
PendingIntent configPendingIntent = PendingIntent.getActivity(context, 0, configIntent, 0);
remoteViews.setOnClickPendingIntent(R.id.update, actionPendingIntent);
remoteViews.setOnClickPendingIntent(R.id.Lilo, configPendingIntent);
appWidgetManager.updateAppWidget(ids, remoteViews );
}
I believe you will need to also set the Intents: if you do not do that the buttons will no longer work once you update the RemoteView.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With