В моем приложении я проверяю, виден ли фрагмент.Если да, то домашний экран должен быть обновлен.
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser){
new UpdateNewsWidgetService().startBakingService(getActivity(),newsArrayList);
}
}
Однако здесь я получаю исключение нулевого указателя
new UpdateNewsWidgetService().startBakingService(getActivity(),newsArrayList);
Класс UpdateNewsWidgetService имеет значение
public class UpdateNewsWidgetService extends IntentService {
ArrayList<News> newsArrayList = new ArrayList<>();
public UpdateNewsWidgetService() {
super("UpdateNewsWidgetService");
}
public static void startBakingService(Context context, ArrayList<News> news) {
Intent intent = new Intent(context, UpdateNewsWidgetService.class);
intent.putExtra("news_list",news);
context.startService(intent);
}
@Override
protected void onHandleIntent( Intent intent) {
if (intent != null) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
Gson gson = new Gson();
String json = prefs.getString("news", "");
Type type = new TypeToken<ArrayList<News>>(){}.getType();
newsArrayList = gson.fromJson(json, type);
handleActionUpdateNewsWidget(newsArrayList);
}
}
private void handleActionUpdateNewsWidget(ArrayList<News> newsArrayList){
Intent intent = new Intent("android.appwidget.action.APPWIDGET_UPDATE2");
intent.setAction("android.appwidget.action.APPWIDGET_UPDATE2");
intent.putExtra("news_list", newsArrayList);
sendBroadcast(intent);
}
}
Так что в основном этострока вызывает исключение.
Intent intent = new Intent(context, UpdateNewsWidgetService.class);
Как это можно исправить?