问题
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.
回答1:
You have to initialize Switch
inside onCreate()
回答2:
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
回答3:
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