菜de园子
我的园子,我做主!

我也是在debug中发现一些小细节,再次总结一下。

1、对于RadioGroup,是RadioButton的一个组设置,可以实现单选效果。 对于RadioGroup的设置监听setOnCheckedChangeListener(OnCheckedChangeListener listener); OnCheckedChangeListener 是一个接口,接口函数为:

public void onCheckedChanged(RadioGroup group, int checkedId); 设置监听后,实现接口,就可以得到 RadioGroup 的对象和RadioGroup 内的RadioButton的checkedId,从而实现操作。

点击RadioButton能响应onCheckedChanged,是因为同组内旧checkedId和新的checkedId不同,有时候我们在XML的布局文件中已经把该RadioButton的android:checked = "true"设置了,如果你在初始化定义此RadioButton的setChecked为true,可能就无法响应onCheckedChanged了。因为我在做程序的时候,为了统一方便,把很多功能都设置在onCheckedChanged中,这样当set变化后,就能自动执行了,所以当我们已经不小心在布局文件中设置了,可以在初始化中再次实现setChecked为true的一些动作了。

        我也是在debug的时候发现一些问题,所以要理解接口,只有在CheckedChanged的时候,才会有响应动作。

2、对于TabHost也是同理的,他是管理不同个布局显示的tab控制器。但是会更复杂一些,以为你需要添加布局到TabHost中,void addTab(TabSpec tabSpec),但是要注意的是,在实现addTab时候,已经默认显示第一个tab,如果你要设置显示tab,可以用TabHost对象setCurrentTab(mCurrentTab),对于TabHost的监听

mTabHost.setOnTabChangedListener(new OnTabChangeListener() {

            @Override
            public void onTabChanged(String tabId) {
                // TODO Auto-generated method stub
                  });

onTabChanged也是当tab变化是才能够响应的,在onTabChanged完成一些动作是要记住TabHost默认现实第一个tab页,所以当你初始化setCurrentTab(0),其实没有完成onTabChanged中对应id的操作。

         我估计写的不够清楚,但是在你调试程序的时候,会深刻体会android的这些控件。

posted on 2011-05-16 16:15  candycaicai  阅读(3416)  评论(1编辑  收藏  举报