I'm trying to create appwidget that displays data from server. I use volley networking framework to get data from server. When I add widget first time to home screen nothings is displayed. When I remove it and add it again data are displayed. Here is my code:
public class WeatherUpdateService extends Service {
private Weather mCurrentWeather;
@Override
@Deprecated
public void onStart(final Intent intent, final int startId) {
final RemoteViews updateViews = buildUpdate(this);
ComponentName widget = new ComponentName(this, WeatherWidgetProvider.class);
AppWidgetManager manager = AppWidgetManager.getInstance(this);
manager.updateAppWidget(widget, updateViews);
}
@Override
public IBinder onBind(final Intent intent) {
return null;
}
public RemoteViews buildUpdate(final Context context) {
Weather curreWeather = getForecastData();
final StringRequest request = WeatherWebServiceImpl.getForecastRequest(apiKey, latitude, longitude, new WeatherWebServiceImpl.WeatherServiceCallbacks<String>() {
@Override
public void onServiceResponse(final String response) {
mCurrentWeather = JsonParser.parseCurrentWeather(response);
}
@Override
public void onServiceErrorResponse(final VolleyError error) {
}
});
UnwetterApplication.getRequestQueue().add(request);
RemoteViews views = null;
if (curreWeather != null) {
views = new RemoteViews(getPackageName(), R.layout.home_screen_widget);
views.setTextViewText(R.id.place, curreWeather.location.city);
} else {
views = new RemoteViews(getPackageName(), R.layout.widget_message);
views.setTextViewText(R.id.message, "XXX");
}
return views;
}
}
public class WeatherWidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(final Context context, final AppWidgetManager appWidgetManager, final int[] appWidgetIds) {
context.startService(new Intent(context, WeatherWidgetProvider.class));
}
}
Can somebody help me to solve this problem? Thank you for help.
0 comments:
Post a Comment