zoukankan      html  css  js  c++  java
  • Tabhost和子界面activity之间的控件相互操作

    本标题的含义是,解决Tabhost本身和子Tab中activity之间的控件调用问题,如子Tab希望在本activity中按menu键,将父Tabhost中的底部menu隐藏,该如何实现?

    猛然要解决这个问题千万不能急恼,本人菜鸟一枚。

    下面是我的例子和解决方法。

    底部的menu是radiogroup构成的。

    1、在Tabhost中设置onkeydown,来设置radiogroup,经过试验失败。

    2、同样的,通过在Tabhost中设置tabHost.getTabWidget().getChildAt(0).setOnClickListener(new OnClickListener() ……同样不行。

    原因就是在子tab中你的按键操作直接指向的就是子tab本身。

    这下完蛋了,两个独立的东西怎么相互调用?我在子Tab中试着写了一个Toast——Toast.makeText(StartActivity.this, this.getParent().getClass().toString(), Toast.LENGTH_SHORT).show();

    发现弹出的是“tabtest”(我的Tabhost类名)。问题解决的关键就在这了。

    既然找到了父类,而且父类就能直接操作radiogroup。只要将父类中的radiogroup通过get和set方法暴露出来就能设置了。

    父类Tabhost中的代码如下:

     1     private boolean groupvisible;//groupvisible当前的状态
     2     private RadioGroup group;//group底部菜单
     3 
     4     /**
     5      * 查看底部菜单当前是否可见
     6      * @return
     7      */
     8     public boolean getgroupisvisible(){
     9         return this.groupvisible;
    10     }
    11     
    12     /**
    13      * 设置底部菜单是否可见
    14      * @param visible
    15      */
    16     public void setgroupvisible(boolean visible){
    17         groupvisible=visible;
    18         if(visible){
    19             group.setVisibility(View.VISIBLE);
    20         }else{
    21             group.setVisibility(View.GONE);
    22         }
    23     }
    24     

    子tab中的activity中相关代码如下:

     1     @Override
     2     public boolean onKeyDown(int keyCode, KeyEvent event) {
     3         if(keyCode == KeyEvent.KEYCODE_MENU && event.getRepeatCount() == 0){
     4             boolean groupvisible= ((TabTest)this.getParent()).getgroupisvisible();//获取底部菜单当前状态
     5             ((TabTest)this.getParent()).setgroupvisible(!groupvisible);//设置底部菜单显示或隐藏
     6         }else{
     7             
     8         }
     9         return true;
    10     }

    代码写完,效果实现。当然你也可以在Tabhost中给radiogroup的隐藏和显示添加个动态效果,更加人性化。

    给需要的同事做个参考。

    关于怎样在tabhost中操作子tab中的控件,我只做个提示,用tabHost.getTabWidget().getChildAt(0).……

    (完)~

  • 相关阅读:
    my first android test
    VVVVVVVVVV
    my first android test
    my first android test
    my first android test
    ini文件
    ZZZZ
    Standard Exception Classes in Python 1.5
    Python Module of the Week Python Module of the Week
    my first android test
  • 原文地址:https://www.cnblogs.com/winxiang/p/2722508.html
Copyright © 2011-2022 走看看