• Android学习对RadioGroup和TabHost监听的理解


    我也是在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的这些控件。

  • 相关阅读:
    windows下添加多个git仓库账号
    向多个git仓库提交
    (原+转)C++中的lambda表达式
    (原)使用vectot的.end()报错:iterators incompatible
    (原)使用opencv的warpAffine函数对图像进行旋转
    (原)VS2013在Release情况下使用vector有时候会崩溃的一个可能原因
    (原)Understand中查看函数调用关系
    (原+转)Ubuntu下安装understand及在启动器中增加快捷方式
    (原)测试intel的并行计算pafor
    (原)C++中测试代码执行时间
  • 原文地址:https://www.cnblogs.com/candycaicai/p/2047803.html
Copyright © 2020-2023  润新知