Android - 片段的bindService

时间:2014-04-24 11:47:33

标签: android android-fragments

我有一个活动类,在onResume部分我已经使用了下一个代码 -

    @Override
protected void onResume() {

    super.onResume();
    bindService(new Intent(MainActivity.this, IMService.class), mConnection , Context.BIND_AUTO_CREATE);
}

onPause我使用了下一个代码 -

@Override
protected void onPause() 
{       
    unbindService(mConnection);
    super.onPause();
}

您可以理解我对服务的绑定和解除绑定。

现在的问题是我想使用片段而不是Activity。

为了做到这一点,我已将onPuse代码更改为 -

    @Override
protected void onPause() 
{       
    getActivity().unbindService(mConnection);
    super.onPause();
}

看起来很好。

但我遇到的问题是onResume的绑定部分,我尝试了下一个代码 -

            @Override
    protected void onResume() {

        super.onResume();
 bindService(new Intent(getActivity(), IMService.class), mConnection , Context.BIND_AUTO_CREATE);
    }

但Eclipse给我一个错误说 -

The method bindService(Intent, ServiceConnection, int) is undefined for the type MainFragment

服务在清单中显示如下 -

    <service android:name="com.example.test.services.IMService" >
    </service>

那么为什么我不能将服务绑定到片段中?也许我需要在getActivity代码中添加一些东西?

提供任何帮助

感谢@Raghunandan的帮助 - 这是解决方案 -

getActivity().bindService(new Intent(getActivity(), IMService.class), mConnection , Context.BIND_AUTO_CREATE);

2 个答案:

答案 0 :(得分:12)

使用

getActivity().bindService(params)

需要Context

答案 1 :(得分:3)

开始:

   Intent intent = new Intent(getActivity(), OdometrService.class);
   getActivity().bindService(intent, connection, Context.BIND_AUTO_CREATE);

停止:

getActivity().unbindService(connection);