最近才开始学习android,关于里面的匿名类是云里雾里的
现在看到RadioGroup,有段代码是这样写的
radioGroup=(RadioGroup)findViewById(R.id. RadioGroup );
radioGroup.setOnCheckedChangeListener(new
RadioGroup.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub
if
if(boy_RadioButton.isChecked()){
answer_TextView.setText(R.string. iam_Boy);
else
}else
else{
answer_TextView.setText(R.string. iamGirl);
}
}
});
这是一个匿名内部类的调用方式RadioGroup的文档上也说RadoiGroup包含了OnCheckedChangeListener()接口。
我想问的是。。既然RadioGroup包含了接口的话它怎么还能被实例化对象呢?(new
RadioGroup.OnCheckedChangeListener()这段代码是只是实例化了接口还是连RadioGroup对象也一起实例化成匿名内部类了。
本人菜鸟大家别拍砖哈。

解决方案 »

  1.   

    实例化了RadioGroup.OnCheckedChangeListener()接口的子类 是个匿名内部类
      

  2.   


    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener(){
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {}
    });效果等同于创建了一个RadioGroup.OnCheckedChangeListener的实现类(但这个对象是匿名的),并把它设置到setOnCheckedChangeListener方法里边。
      

  3.   

    即等同于:
    class ListenerImpl implements RadioGroup.OnCheckedChangeListener{
      @Override
      public void onCheckedChanged(RadioGroup group, int checkedId) {
             //xxxx
      }
    }radioGroup.setOnCheckedChangeListener(new ListenerImpl());楼主给分!
      

  4.   

    那这个radioGroup既然包含了setOnCheckedChangeListener接口。。为什么还能建立个对象哟?
    radioGroup=(RadioGroup)findViewById(R.id. RadioGroup );
      

  5.   

    setOnCheckedChangeListener只是一个方法,需要把RadioGroup.OnCheckedChangeListener类型的对象传进去