Android中CheckBox的SetOnClickListener與setOnCheckedChangeListener的區別


package com.itcast.radiobutton;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.TextView;

public class MainActivity extends Activity {

    private TextView tv;
    private Button btn;
    private CheckBox cb;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        tv = (TextView)this.findViewById(R.id.TextView01);
        cb=(CheckBox)this.findViewById(R.id.CheckBox01);
        cb.setChecked(false);
        btn = (Button)this.findViewById(R.id.Button01);
        btn.setEnabled(false);
    cb.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if(cb.isChecked()){
                    btn.setEnabled(true);
                    tv.setText("");
                }else
                {
                    btn.setEnabled(false);
                    tv.setText("請勾選我");
                }
            }
            
        });
        
        cb.setOnCheckedChangeListener(new OnCheckedChangeListener(){

            @Override
            public void onCheckedChanged(CompoundButton buttonView,
                    boolean isChecked) {
                // TODO Auto-generated method stub
                if(isChecked){
                        btn.setEnabled(true);
                        tv.setText("");
                    }else
                    {
                        btn.setEnabled(false);
                        tv.setText("請勾選我");
                    }
                }
            }
 );
        
        btn.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if(cb.isChecked()){
                    tv.setText("已經選擇");
                }
            }
            
        });
        
        
        
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}
      兩者都能實現對CheckBox的狀態改變的監聽,但一般情況下,用的更多的是setOnCheckedChangeListener。因為,當CheckBox的狀態不是通過點擊事件改變,而是通過其他的方式改變時,比如setCheck(),setOnClickListener無法完成此種情況下的監聽。OnCheckChangedListener監聽CheckBox的狀態,無論來自你的onClick事件還是其他。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM