0

我有一个通过调用服务的活动

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(this, NeglectedService.class) ,那么错误就会消失,但不会调用服务(ofc,活动不知道该调用谁)

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

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

4

2 回答 2

1

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

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

MyActivity您的活动课程的名称在哪里。

于 2011-06-23T20:15:39.167 回答
1

您的问题是thisIntent 实例化的范围。您在哪里调用它,this指的是 的实例View.OnClickListener,但它必须是 的实例android.content.Context

如果您的 Activity 包含您包含的代码片段,我不知道名称,但如果已命名,MyActivityClass则您需要替换thisMyActivityClass.this.

于 2011-06-23T20:26:51.130 回答