Tabhost和子界面activity之间的控件相互操作
2012-10-13 14:04
225 查看
本标题的含义是,解决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中的代码如下:
子tab中的activity中相关代码如下:
代码写完,效果实现。当然你也可以在Tabhost中给radiogroup的隐藏和显示添加个动态效果,更加人性化。
给需要的同事做个参考。
关于怎样在tabhost中操作子tab中的控件,我只做个提示,用tabHost.getTabWidget().getChildAt(0).……
(完)~
猛然要解决这个问题千万不能急恼,本人菜鸟一枚。
下面是我的例子和解决方法。
底部的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中的代码如下:
private boolean groupvisible;//groupvisible当前的状态 private RadioGroup group;//group底部菜单 /** * 查看底部菜单当前是否可见 * @return */ public boolean getgroupisvisible(){ return this.groupvisible; } /** * 设置底部菜单是否可见 * @param visible */ public void setgroupvisible(boolean visible){ groupvisible=visible; if(visible){ group.setVisibility(View.VISIBLE); }else{ group.setVisibility(View.GONE); } }
子tab中的activity中相关代码如下:
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_MENU && event.getRepeatCount() == 0){ boolean groupvisible= ((TabTest)this.getParent()).getgroupisvisible();//获取底部菜单当前状态 ((TabTest)this.getParent()).setgroupvisible(!groupvisible);//设置底部菜单显示或隐藏 }else{ } return true; }
代码写完,效果实现。当然你也可以在Tabhost中给radiogroup的隐藏和显示添加个动态效果,更加人性化。
给需要的同事做个参考。
关于怎样在tabhost中操作子tab中的控件,我只做个提示,用tabHost.getTabWidget().getChildAt(0).……
(完)~
相关文章推荐
- C# Winform主窗体和子窗体之间如何相互操作对方的控件
- 主窗体和子窗体之间如何相互操作对方的控件
- 主窗体和子窗体之间如何相互操作对方的控件
- 主窗体和子窗体之间如何相互操作对方的控件
- 主窗体和子窗体之间如何相互操作对方的控件
- C# Winform主窗体和子窗体之间如何相互操作对方的控件
- 转: 主窗体和子窗体之间如何相互操作对方的控件
- [愚翁专栏]主窗体和子窗体之间如何相互操作对方的控件
- 主窗体和子窗体之间如何相互操作对方的控件
- C#主窗体和子窗体之间如何相互操作对方的控件
- 主窗体和子窗体之间如何相互操作对方的控件
- C# Winform主窗体和子窗体之间如何相互操作对方的控件
- .NET组件和COM组件之间的相互操作
- 父窗体与子窗体之间的相互操作
- C#操作图片与BASE64之间的相互转换适应于网页中不能引用路径的情况
- 用户控件与各页面间之间相互的传值.
- Visual C#实现父窗口和子窗口之间实现控件互操作
- C#线程之间操作无效|不允许访问控件(c# 线程间操作无效: 从不是创建控件“”的线程访问它)
- C#(WIN FORM)两个窗体间之间的相互操作
- C#中父窗口和子窗口之间实现控件互操作 (转载)