【问题标题】:How to access service in activity from fragment as soon as it's ready?准备好后如何从片段中访问活动中的服务?
【发布时间】:2014-10-15 00:39:27
【问题描述】:

我有一个FragmentActivity,并且我在其onResume 方法中绑定到一个服务。我还有一个Fragment 被添加到活动中。 Fragment 会从AsyncTask 中的doInBackground 方法调用服务先进行一些初始化,然后在初始化之后,片段中的一个按钮将变为启用状态。但是当我尝试从片段的onActivityCreatedonResume 方法中执行AsyncTask 时,我在尝试获取服务时得到了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();
}

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

【问题讨论】:

    标签: java android android-fragments android-asynctask


    【解决方案1】:

    我假设您在某个时候从片段中将变量 activity 设置为 getActivity()。我的猜测是,当您这样做时,该片段尚未附加,因此 activity 为 null 而不是 getMyService()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      • 1970-01-01
      • 2015-04-13
      • 1970-01-01
      • 1970-01-01
      • 2021-06-13
      相关资源
      最近更新 更多