java.lang.String android.content.Context.getPackageName () 'для ссылки на пустой объект - PullRequest
0 голосов
/ 19 мая 2018

В моем приложении я проверяю, виден ли фрагмент.Если да, то домашний экран должен быть обновлен.

@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);

Как это можно исправить?

1 Ответ

0 голосов
/ 19 мая 2018

Проверьте, не равен ли ваш контекст нулю.Вы также можете попробовать использовать getContext() вместо getActivity().

...