如何传递一个字符串从活动的Andr​​oid来服务? [英] how can i pass a string from activity to Service in Android?

查看:78
本文介绍了如何传递一个字符串从活动的Andr​​oid来服务?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

谁能告诉如何传递一个字符串或整数无论从活动服务。
我尝试考绩整数setpossition(4),但它不走,总是需要0服务时,它开始我不知道为什么我不能从活动使用服务的实例操作。

 公共类MainMP3延伸活动{
按钮播放,停止,preV,接下来,清单;静态最后弦乐MEDIA_PATH =新的String(/ SD卡/);
 活动main_activity;@覆盖
公共无效的onCreate(捆绑savedInstanceState){
    main_activity =这一点;
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.mp3interface);
    玩=(按钮)findViewById(R.id.play);
    停止=(按钮)findViewById(R.id.stop);
    preV =(按钮)findViewById(R.id. preV);
    接下来=(按钮)findViewById(R.id.next);
    名单=(按钮)findViewById(R.id.listofsongs);
    play.setOnClickListener(新StartClick());    stop.setOnClickListener(新StopClick());    prev.setOnClickListener(新PullClick());    next.setOnClickListener(新View.OnClickListener(){        @覆盖
        公共无效的onClick(视图v){
        }
    });
    list.setOnClickListener(新View.OnClickListener(){        @覆盖
        公共无效的onClick(视图v){            意图I =新意图(MainMP3.this,songlist.class);
            startActivity(ⅰ);        }
    });}
  ServiceMP3服务= NULL;  ServiceConnection连接=新ServiceConnection(){        @Override //当连接时调用
        公共无效onServiceConnected(CNAME组件名,粘结剂的IBinder){
            服务=((ServiceMP3.SlowBinder)粘合剂).getService();
        }
        @Override //
        公共无效onServiceDisconnected(组件名CNAME){
            服务= NULL;
        }
    };
    私有类StartClick实现View.OnClickListener {
        公共无效的onClick(视图v){
            意向意图=新意图(main_activity,ServiceMP3.class);
            service.setposition(4);
            main_activity.startService(意向);        }
    }    私有类StopClick实现View.OnClickListener {
        公共无效的onClick(视图v){
            意向意图=新意图(main_activity,ServiceMP3.class);
            main_activity.stopService(意向);        }
    }
    私有类PullClick实现View.OnClickListener {
        公共无效的onClick(视图v){        }
    }
        }


解决方案

您有意向设置的值,并传递意图,同时启动该服务,
你可以在serivce获取值onStartCommand(意向意图,诠释标志诠释startId)。

这是你如何必须通过意图传递整数。

 私有类StartClick实现View.OnClickListener {
            公共无效的onClick(视图v){
                意向意图=新意图(main_activity,ServiceMP3.class);
                intent.putExtras(位置,4);
                main_activity.startService(意向);            }
        }

您可以得到的数值就是这个样子服务

 公众诠释onStartCommand(意向意图,诠释旗帜,INT startId){
    如果(意向!= NULL){
       INT位置= intent.getIntExtra(位置,0);
       }
    }

Can anyone tell how to pass an String or integer whatever, from activity to Service. im trying to pas an integer setpossition(4), but it doesnt take, always it takes 0 Service when it start I dont know why i cant manipulate from Activity by using an instance of Service.

    public class MainMP3 extends Activity{
Button play,stop,prev,next,list;

static final String MEDIA_PATH = new String("/sdcard/");
 Activity main_activity;

@Override
public void onCreate(Bundle savedInstanceState) {
    main_activity=this;
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mp3interface);


    play= (Button) findViewById(R.id.play);
    stop= (Button) findViewById(R.id.stop);
    prev= (Button) findViewById(R.id.prev);
    next= (Button) findViewById(R.id.next);
    list= (Button) findViewById(R.id.listofsongs);


    play.setOnClickListener(new StartClick());  

    stop.setOnClickListener(new StopClick());  

    prev.setOnClickListener(new PullClick());  





    next.setOnClickListener(new View.OnClickListener() {

        @Override                           
        public void onClick(View v) {


        }
    });


    list.setOnClickListener(new View.OnClickListener() {

        @Override                           
        public void onClick(View v) {

            Intent i= new Intent(MainMP3.this,songlist.class);
            startActivity(i);

        }
    });

}




  ServiceMP3 service = null;

  ServiceConnection connection = new ServiceConnection() {

        @Override  // Called when connection is made
        public void onServiceConnected(ComponentName cName, IBinder binder) {
            service = ((ServiceMP3.SlowBinder)binder).getService();
        }
        @Override   //
        public void onServiceDisconnected(ComponentName cName) {
            service = null;
        }
    };


    private class StartClick implements View.OnClickListener {      
        public void onClick(View v) {
            Intent intent = new Intent(main_activity,ServiceMP3.class);
            service.setposition(4);
            main_activity.startService(intent);



        }
    }

    private class StopClick implements View.OnClickListener {       
        public void onClick(View v) {
            Intent intent = new Intent(main_activity,ServiceMP3.class);
            main_activity.stopService(intent);

        }
    }


    private class PullClick implements View.OnClickListener {       
        public void onClick(View v) {



        }
    }


        }

解决方案

You have to set the values in intent and pass that intent while starting the service, and you can get the values in serivce onStartCommand(Intent intent, int flags, int startId).

This is how you have to pass that integer through intent.

private class StartClick implements View.OnClickListener {      
            public void onClick(View v) {
                Intent intent = new Intent(main_activity,ServiceMP3.class);
                intent.putExtras("position",4);
                main_activity.startService(intent);

            }
        }

You can get the values is service like this

 public int onStartCommand(Intent intent, int flags, int startId) {
    if(intent != null){
       int position = intent.getIntExtra("position", 0);
       }
    }

这篇关于如何传递一个字符串从活动的Andr​​oid来服务?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆