Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用带有片段的活动绑定服务_Android_Android Fragments_Android Service - Fatal编程技术网

Android 使用带有片段的活动绑定服务

Android 使用带有片段的活动绑定服务,android,android-fragments,android-service,Android,Android Fragments,Android Service,我对绑定服务有疑问。我有父活动和几个片段,我用活动绑定和解除绑定服务,现在我可以在片段中访问该服务了吗?我需要在片段中使用ServiceConnection。是的,您可以通过以下方式访问片段中父活动的服务: getActivity().getMyService() 是的,您可以通过以下方式访问片段中父活动的服务: getActivity().getMyService() ===============在您的活动中================= callbackFragmentSe

我对绑定服务有疑问。我有父活动和几个片段,我用活动绑定和解除绑定服务,现在我可以在片段中访问该服务了吗?我需要在片段中使用ServiceConnection。

是的,您可以通过以下方式访问片段中父活动的服务:

getActivity().getMyService()

是的,您可以通过以下方式访问片段中父活动的服务:

getActivity().getMyService()

===============在您的活动中=================

    callbackFragmentServiceConnection callbackfragment;
        public interface callbackFragmentServiceConnection{
            public void servicefun(MusicPlayService musicPlayService);
        }

        public void registerClientFragment(Fragment fragment){

            this.callbackfragment = (callbackFragmentServiceConnection)fragment;

        }

/** Defines callbacks for service binding, passed to bindService() */
    private ServiceConnection mConnection = new ServiceConnection() {

        @Override
        public void onServiceConnected(ComponentName className,
                                       IBinder service) {

            mBound = true;


            callbackfragment.servicefun(musicPlayService);



        }

        @Override
        public void onServiceDisconnected(ComponentName arg0) {
            mBound = false;
        }
    };
public class FragmentLibraryTrack extends Fragment implements 

    MainActivity.callbackFragmentServiceConnection {


        MainActivity mainActivity;
     @Override
        public void onAttach(Context context) {
            super.onAttach(context);
            mainActivity= (MainActivity) context;


        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            mainActivity.registerClientFragment(this);

    }

    @Override
        public void servicefun(MusicPlayService musicPlayService) {
            Log.e("reached sucessfully","yes");
        }

    }
========================在您的片段中=============

    callbackFragmentServiceConnection callbackfragment;
        public interface callbackFragmentServiceConnection{
            public void servicefun(MusicPlayService musicPlayService);
        }

        public void registerClientFragment(Fragment fragment){

            this.callbackfragment = (callbackFragmentServiceConnection)fragment;

        }

/** Defines callbacks for service binding, passed to bindService() */
    private ServiceConnection mConnection = new ServiceConnection() {

        @Override
        public void onServiceConnected(ComponentName className,
                                       IBinder service) {

            mBound = true;


            callbackfragment.servicefun(musicPlayService);



        }

        @Override
        public void onServiceDisconnected(ComponentName arg0) {
            mBound = false;
        }
    };
public class FragmentLibraryTrack extends Fragment implements 

    MainActivity.callbackFragmentServiceConnection {


        MainActivity mainActivity;
     @Override
        public void onAttach(Context context) {
            super.onAttach(context);
            mainActivity= (MainActivity) context;


        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            mainActivity.registerClientFragment(this);

    }

    @Override
        public void servicefun(MusicPlayService musicPlayService) {
            Log.e("reached sucessfully","yes");
        }

    }

===============在您的活动中=================

    callbackFragmentServiceConnection callbackfragment;
        public interface callbackFragmentServiceConnection{
            public void servicefun(MusicPlayService musicPlayService);
        }

        public void registerClientFragment(Fragment fragment){

            this.callbackfragment = (callbackFragmentServiceConnection)fragment;

        }

/** Defines callbacks for service binding, passed to bindService() */
    private ServiceConnection mConnection = new ServiceConnection() {

        @Override
        public void onServiceConnected(ComponentName className,
                                       IBinder service) {

            mBound = true;


            callbackfragment.servicefun(musicPlayService);



        }

        @Override
        public void onServiceDisconnected(ComponentName arg0) {
            mBound = false;
        }
    };
public class FragmentLibraryTrack extends Fragment implements 

    MainActivity.callbackFragmentServiceConnection {


        MainActivity mainActivity;
     @Override
        public void onAttach(Context context) {
            super.onAttach(context);
            mainActivity= (MainActivity) context;


        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            mainActivity.registerClientFragment(this);

    }

    @Override
        public void servicefun(MusicPlayService musicPlayService) {
            Log.e("reached sucessfully","yes");
        }

    }
========================在您的片段中=============

    callbackFragmentServiceConnection callbackfragment;
        public interface callbackFragmentServiceConnection{
            public void servicefun(MusicPlayService musicPlayService);
        }

        public void registerClientFragment(Fragment fragment){

            this.callbackfragment = (callbackFragmentServiceConnection)fragment;

        }

/** Defines callbacks for service binding, passed to bindService() */
    private ServiceConnection mConnection = new ServiceConnection() {

        @Override
        public void onServiceConnected(ComponentName className,
                                       IBinder service) {

            mBound = true;


            callbackfragment.servicefun(musicPlayService);



        }

        @Override
        public void onServiceDisconnected(ComponentName arg0) {
            mBound = false;
        }
    };
public class FragmentLibraryTrack extends Fragment implements 

    MainActivity.callbackFragmentServiceConnection {


        MainActivity mainActivity;
     @Override
        public void onAttach(Context context) {
            super.onAttach(context);
            mainActivity= (MainActivity) context;


        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            mainActivity.registerClientFragment(this);

    }

    @Override
        public void servicefun(MusicPlayService musicPlayService) {
            Log.e("reached sucessfully","yes");
        }

    }

我添加了connectionService=newintent(getApplicationContext(),XMPPService.class);bindService(connectionService,this,Context.BIND\u AUTO\u CREATE);在我的活动中…什么是getMyService()@Richa getMyService()将是您对本地创建的服务的引用。您可以在此处找到更多详细信息。希望这能澄清您的疑问。我添加了connectionService=newintent(getApplicationContext(),XMPPService.class);bindService(connectionService,this,Context.BIND\u AUTO\u CREATE);在我的活动中…什么是getMyService()@Richa getMyService()将是您对本地创建的服务的引用。您可以在此处找到更多详细信息。希望这能澄清您的疑问。绑定服务可能重复到主机活动和片段应该与服务一起工作,认为活动需要回调的帮助。绑定服务可能重复到主机活动和片段应该与服务一起工作,认为活动需要回调的帮助已经完成。但是我们不能将代码仅保留在活动中,并访问ServiceConnection。因为在每个片段中绑定和解除绑定都不是好主意,这是我已经做过的。但是我们不能只在活动中保存代码,并访问ServiceConnection。因为在每个片段中绑定和解除绑定都不是好主意