我有一项通过
调用服务的活动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())
答案 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
。