package com.example.koustav.myapplication;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
Switch swi = (Switch) findViewById(R.id.swch);
swi.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) //Line A
{
}
});
public void onClick(View view)
{
boolean isOn = ((Switch) view).isChecked();
if (isOn)
{
((TextView) findViewById(R.id.largey)).setTextColor(getResources().getColor(R.color.black));
}
else
{
((TextView) findViewById(R.id.largey)).setTextColor(getResources().getColor(R.color.white));
}
}
}
I am using Android Studio for this project. I have searched the interwebs for a solution extensibly but could not find one.
I have been trying to use setOnCheckedChangeListener
for a Switch
object. However no matter what I try, I always get a Cannot Resolve Symbol 'setOnCheckedChangeListener' error. Also, at the line A, the object buttonView is underlined red giving the same error Cannot Resolve Symbol 'buttonView'.
I have imported the necessary (and recommended as answers for other people) classes. I am working with APIs for android 4.0 and above. I basically want the onClick
method to be re-implemented via the listener because the listener works with both clicks and swipes whereas onClick
only works with clicks and not swipes.
You have to initialize Switch
inside onCreate()
move
Switch swi = (Switch) findViewById(R.id.swch);
swi.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) //Line A
{
}
});
in onCreate
. You can't call findViewById
, before the activity is created, and swi.setOnCheckedChangeListener(..);
is not a valid statement
Replace the below code
switchButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SwitchButton switchButton = (SwitchButton)view;
by
switchButton.setOnCheckedChangeListener( new SwitchButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
SwitchButton switchButton = (SwitchButton) buttonView;
it will work !
来源:https://stackoverflow.com/questions/29844990/android-when-using-setoncheckedchangelistener-on-switches-i-get-cannot-resolve