• 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).……

    (完)~

  • 相关阅读:
    zookeeper集群搭建
    Redis集群管理
    postman的使用
    python接口自动化:requests+ddt+htmltestrunner数据驱动框架
    python实现建立websocket通信
    python实现建立soap通信(调用及测试webservice接口)
    python接口自动化:响应内容中json字符串对象的处理
    python接口自动化:调试接口的代码(无token情况下)
    python接口自动化:https请求,取消警告
    python接口自动化:对外接口sign签名
  • 原文地址:https://www.cnblogs.com/winxiang/p/2722508.html
Copyright © 2020-2023  润新知