반응형
Android : 체크 박스 리스너
리스너를 CheckBox
. 나는 정보를 찾았고 다음과 같습니다.
satView = (CheckBox)findViewById(R.id.sateliteCheckBox);
satView.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (isChecked){
// perform logic
}
}
});
문제는 Eclipse가 OnCheckedChangeListener
a 용 이라고 생각하고 RadioGroup
작동하지 않는다는 것입니다. 이 문제를 어떻게 해결할 수 있습니까?
다음과 같이 할 수 있습니다.
satView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
}
}
);
간단한 방법으로 갈 수도 있습니다 View.OnClickListener
.
satView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(((CompoundButton) view).isChecked()){
System.out.println("Checked");
} else {
System.out.println("Un-Checked");
}
}
});
잘못된 패키지를 가져 왔기 때문에 오류가 발생합니다. import android.widget.CompoundButton.OnCheckedChangeListener;
따라서 콜백은 다음과 같아야합니다.
box.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
}
});
이 시도:
satView = (CheckBox) findViewById(R.id.sateliteCheckBox);
satView.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (buttonView.isChecked()) {
// checked
}
else
{
// not checked
}
}
});
도움이 되었기를 바랍니다.
로 변경 RadioGroup group
한 CompoundButton buttonView
다음 Ctrl + Shift + O를 눌러 가져 오기를 수정합니다.
이 코드를 사용할 수 있습니다.
public class MySampleActivity extends Activity {
CheckBox cb1, cb2, cb3, cb4;
LinearLayout l1, l2, l3, l4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
cb1 = (CheckBox) findViewById(R.id.cb1);
cb2 = (CheckBox) findViewById(R.id.cb2);
cb3 = (CheckBox) findViewById(R.id.cb3);
cb4 = (CheckBox) findViewById(R.id.cb4);
l1 = (LinearLayout) findViewById(R.id.l1);
l2 = (LinearLayout) findViewById(R.id.l2);
l3 = (LinearLayout) findViewById(R.id.l3);
l4 = (LinearLayout) findViewById(R.id.l4);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(1));
cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(2));
cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(3));
cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(4));
}
public class MyCheckedChangeListener implements CompoundButton.OnCheckedChangeListener {
int position;
public MyCheckedChangeListener(int position) {
this.position = position;
}
private void changeVisibility(LinearLayout layout, boolean isChecked) {
if (isChecked) {
l1.setVisibility(View.VISIBLE);
} else {
l1.setVisibility(View.GONE);
}
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
switch (position) {
case 1:
changeVisibility(l1, isChecked);
break;
case 2:
changeVisibility(l2, isChecked);
break;
case 3:
changeVisibility(l3, isChecked);
break;
case 4:
changeVisibility(l4, isChecked);
break;
}
}
}
}
이 시도
satView.setOnCheckedChangeListener(new android.widget.CompoundButton.OnCheckedChangeListener.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (isChecked){
// perform logic
}
}
});
h.chk.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
CheckBox chk=(CheckBox)view; // important line and code work
if(chk.isChecked())
{
Message.message(a,"Clicked at"+position);
}
else
{
Message.message(a,"UnClick");
}
}
});
Chris가 수락 한 답변을 Kotlin으로 번역 :
val checkBox: CheckBox = findViewById(R.id.chk)
checkBox.setOnCheckedChangeListener { buttonView, isChecked ->
// Code here
}
인터페이스 구현으로 Kotlin에서이 작업을 수행하려는 경우.
class MainActivity: AppCompatActivity(),CompoundButton.OnCheckedChangeListener{
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val yourCheckBox = findViewById<CheckBox>(R.id.check_box)
yourCheckBox.setOnCheckedChangeListener(this)
}
override fun onCheckedChanged(buttonView: CompoundButton?, isChecked: Boolean) {
when(buttonView?.id){
R.id.check_box -> Log.d("Checked: ","$isChecked")
}
}
}
참고 URL : https://stackoverflow.com/questions/8386832/android-checkbox-listener
반응형
'Programing' 카테고리의 다른 글
"x"라는 이름의 경로가 이미 경로 모음에 있습니다. (0) | 2020.08.27 |
---|---|
Android 에뮬레이터에서 localhost를 어떻게 연결합니까? (0) | 2020.08.27 |
급여 테이블에서 세 번째 또는 n 번째 최대 급여를 찾는 방법은 무엇입니까? (0) | 2020.08.27 |
Android는 뷰 사이에 수평선을 그립니다. (0) | 2020.08.27 |
자바 스크립트에서 브라우저 간 플래시 감지 (0) | 2020.08.27 |