Reputation: 875
Im trying to create a widget and i get a error when trying to use the Resources res = getResources(); It says its undefined in widget so i'd like to know what i could sub it for. It would be easier to ask in chat but no one is in the android chat on here
Anyway heres my code:
package kevin.erica.box;
import java.util.Arrays;
import java.util.Random;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.util.Log;
import android.widget.RemoteViews;
public class Widget extends AppWidgetProvider {
Resources res = getResources();
private static final Random rgenerator = new Random();
private static final Random rgenerator2 = new Random();
private String[] myString1;
private String[] myString2,
myString = res.getStringArray(R.array.myArray);
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final int N = appWidgetIds.length;
Log.i("ExampleWidget", "Updating widgets " + Arrays.asList(appWidgetIds));
// Perform this loop procedure for each App Widget that belongs to this
// provider
for (int i = 0; i < N; i++) {
int appWidgetId = appWidgetIds[i];
// Create an Intent to launch ExampleActivity
Intent intent = new Intent(context, Widget.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
// Get the layout for the App Widget and attach an on-click listener
// to the button
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widgetlayout);
views.setOnClickPendingIntent(R.id.imagewidgeterica, pendingIntent);
// To update a label
views.setTextViewText(appWidgetId, myString[rgenerator.nextInt(myString.length)]);
// Tell the AppWidgetManager to perform an update on the current app
// widget
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
}
Upvotes: 0
Views: 1777
Reputation: 137292
Move the lines:
Resources res = getResources();
myString = res.getStringArray(R.array.myArray);
To the onUpdate
method:
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{
Resources res = context.getResources();
if (myString == null)
{
myString = res.getStringArray(R.array.myArray);
}
// ...
}
Upvotes: 1