zoukankan      html  css  js  c++  java
  • 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的这些控件。

  • 相关阅读:
    ZOJ 2158 Truck History
    Knight Moves (zoj 1091 poj2243)BFS
    poj 1270 Following Orders
    poj 2935 Basic Wall Maze (BFS)
    Holedox Moving (zoj 1361 poj 1324)bfs
    ZOJ 1083 Frame Stacking
    zoj 2193 Window Pains
    hdu1412{A} + {B}
    hdu2031进制转换
    openjudge最长单词
  • 原文地址:https://www.cnblogs.com/candycaicai/p/2047803.html
Copyright © 2011-2022 走看看