如何准备好从片段访问活动中的服务?

时间:2014-10-15 00:39:27

标签: java android android-fragments android-asynctask

我有一个FragmentActivity,并且我在onResume方法中绑定了一项服务。我还有一个Fragment被添加到活动中。 Fragment将从doInBackground中的AsyncTask方法调用服务,先进行初始化,然后在初始化后,片段中的按钮将变为启用状态。但是当我尝试从片段的AsyncTaskonActivityCreated方法执行onResume时,我在尝试获取服务时得到NullPointerException

@Override
public void onResume() {
  new AsyncTask<Void, Void, Boolean>() {

    @Override
    protected Boolean doInBackground(Void params) {
      return activity.getMyService().doSomeInit(); // getMyService() returns null
    }

    @Override
    protected void onPostExecute(Boolean result) {
      someButton.enabled(result);
    }

  }.execute();
}

活动将连接到服务,但是如何告诉片段服务已准备好使用(因此不再为null)?

1 个答案:

答案 0 :(得分:0)

我假设您在某个时刻从片段中将变量activity设置为getActivity()。我的猜测是,当你这样做时片段没有附加,因此activity为空而不是getMyService()