在setOnClickListener onCreate中调用StartService时出错

时间:2011-06-23 20:12:06

标签: android onclick togglebutton

我有一项通过

调用服务的活动
startService(new android.content.Intent(this,NeglectedService.class);

我正在尝试添加一个ToggleButton,当isChecked(True)时,服务将运行,反之亦然。

        toggleService = (ToggleButton)findViewById(R.id.btnStopStartService);
    toggleService.setOnClickListener(new View.OnClickListener() 
    {
        @Override
        public void onClick(View v) 
        {
            if(toggleService.isChecked())
            {
                // Start the service
                showToast("true");
                startService(new Intent(this,NeglectedService.class));
            }
            else
            {
                // Pause/Stop the service
                showToast("false");
            }
        }
    });

但是这样调用会返回错误,我不知道如何处理

The constructor Intent(new View.OnClickListener(){}, Class<NeglectedService>) is undefined

如果我删除了新的Intent(这个,NeglectedService.class)而不是错误消息,但是没有调用该服务(ofc,该活动不知道该调用谁)

所以,我的问题: - 如何从我的活动中监控和启动/停止服务?

问题:如何从创建它的活动中控制服务状态? 我有一个togglebutton.onclicklistener。我希望当切换开启时,服务将运行,并停止wehn切换为关闭。 我将使用sharedpreferences来存储服务状态,但是在调用startService时遇到错误(new android.content.Intent(this,NeglectedService.class);来自if(toggleService.isChecked())

2 个答案:

答案 0 :(得分:1)

您尝试使用的构造函数将Context作为其第一个参数,但this不是Context的实例,它是您的匿名点击监听器宣布。要传递外部实例,您需要对其进行限定:

startService(new Intent(MyActivity.this, NeglectedService.class));

其中MyActivity是您的活动类的名称。

答案 1 :(得分:1)

您的问题是您的Intent实例化中this的范围。在您呼叫的位置,this指的是View.OnClickListener的实例,但它必须是android.content.Context的实例。

如果你的Activity包含你所包含的代码段,但是如果名为MyActivityClass,那么你不需要知道该名称,那么你需要用this替换MyActivityClass.this