我是用继承ActivityGroup的方法来做了一个TabHost,其中有两个Tab,我的目的是通过修改ActivityGroup对应的自定义菜单来修改其中一个Tab的布局。之前通过
tabhost.getTabWidget().getChildAt(index);
的方法来获取某个Tab的View,经过调试,可以得到这个view,但是我却不能通过这个view来获取这个Tab对应的布局当中的组件,例如:
ImageView imageview=(ImageView)tabview.findViewbyId(imageviewId);
得到的imageview始终是空的,不知道为什么,如果哪位大侠知道原因还望指点一二。
使用这种方法行不通,没办法了,去google查询了好久,功夫不负有心人,终于找到可以直接获取Tab对应的Activity的方法了,示意代码如下:
Activity activity=getLocalActivityManager().getActivity("houseoverviewTab");
ImageView iv_houseOverview=(ImageView)activity.findViewById(R.id.imageView_houseoverview);
通过这种方法,可以得到我指定TabId的Tab对应的Activity,然后通过这个Activity即可获取到它布局当中的组件。这其中“houseoverviewTab”是我在创建这个Tab时指定的tabId,如下:
houseoverviewSpec=tabhost.newTabSpec("houseoverviewTab");
houseoverviewTabIntent=new Intent(this,HouseOverview.class);
houseoverviewTabView=new TabView(this,
R.drawable.houseoverviews,
R.drawable.houseoverviewu,
"全局视图");
houseoverviewSpec.setIndicator(houseoverviewTabView).setContent(houseoverviewTabIntent);
tabhost.addTab(houseoverviewSpec);
这里的TabView是我自己定义的一个布局类,就不说了,不然越说越远了....
在查询的过程中还看到一种方法,自己没有实践过,不知道正不正确。即如果你使用:
getLocalActivityManager().startActivity("ShowPodcasts", intent)
这种方法来开始的一个Activity,那么你也可以使用:
getLocalActivityManager().getActivity("ShowPodcasts");
来得到指定的activity