开发者

Error in calling StartService while in setOnClickListener onCreate

I have an activity which calls a service through

startService(new android.content.Intent(this,NeglectedService.class);

I am trying to add a ToggleButton, that while isChecked(True) the service will run, and vice versa.

        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");
            }
        }
    });

But calling this way returns an error, I don't know how to tackle

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

If I remove the new Intent(this, NeglectedService.class) than the error dissappears, but the service is not called (ofc, the activity doesn't know who to call)

So, my question: - How can I monitor and start/stop a service from my activity?

Question: How can I control a service state from the activity that created it? I have a togglebutton.onclicklistener. I want that when the toggle is ON, the service will run, and stop wehn toggled to off. I will use sharedpreferences to store the service state, but I get an error when calling startService(new 开发者_如何学运维android.content.Intent(this,NeglectedService.class); from the if(toggleService.isChecked())


The constructor that you are trying to use takes a Context as its first argument, but this isn't an instance of Context, it's the anonymous on-click listener that you are declaring. To pass the outer instance you need to qualify it:

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

where MyActivity is the name of your activity class.


Your problem is the scope of this in your Intent instantiation. Where you are calling it,this refers to an instance of View.OnClickListener, but it needs to be an instance of android.content.Context.

I do not know the name if your Activity which contains the code snippet that you have included, but if is named MyActivityClassthen you need to replace thiswith MyActivityClass.this.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜