在我的应用程序中,我检查片段是否可见。如果是,则应更新主屏幕。
@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);
如何解决这个问题?
答案 0 :(得分:0)
检查您的上下文是否为空。
您也可以尝试使用getContext()
代替getActivity()
。