TabActivity,ActivityGroup,ExpandableListActivity,ListView联合使用问题解决。

来源:互联网 发布:分享seo与网络营销 编辑:程序博客网 时间:2024/06/03 22:40

一、需求,在Tab的一页中根据其他页的设置切换ExpandableListActivity和ListView。

ListView:

ExpandableListActivity:


二、方案:Tab中使用ActivityGroup,用ActivityGroup控制ExpandableListActivity和ListView的切换。


这个是成功的代码,5步完成Activity显示。

@Override
protected void onResume() {
LinearLayout container = (LinearLayout) getWindow().findViewById(R.id.contacts_main_view);//1、得到ActivityGroup布局容器
container.removeAllViews();                                                                                                                       //2、去掉所有view。
if (mpatterManagr.isPatter(Defines.MyContactsPatterType.PATTER_EXPAND)) {
Intent intent = new Intent(this, ContactsListExpandActivity.class);
Window w1 = getLocalActivityManager().startActivity(EXPAND_AC,
intent);
container.addView(w1.getDecorView(), LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT);// (w1.getDecorView().getLayoutParams().);
} else {
Intent intent = new Intent(this, ContactsListIphoneActivity.class);                                              //3、获得要去的Activity。
Window w1 = getLocalActivityManager().startActivity(IPHONE_AC,                                           //4、通过LocalActivityManager前往,会返回一个window。
intent);
container.addView(w1.getDecorView());                                                                                         //5、把window的view传给ActivityGroup布局容器。
}


super.onResume();
}


三、问题:

1、切换代码需要放到onResume方法里面。tab切到ActivityGroup,进的是onResume方法。

2、需要为ActivityGroup创建一个xml布局文件,空的LinearLayout 就行,记得加个id。这里需要用到

3、ExpandableListActivity显示的时候,焦点出现问题,只能点字母那块。增加布局参数可以解决这个问题。

4、对象传递,用getParent()。






原创粉丝点击