其实第一步中已经实现了简单的bottom tab,但是如果bottom tab 中嵌入的activity会跳转到自己内部的一些activity时,bottom tab 就会消失,这样很不好看。
经过一番搜索:以为这篇文章实现了我的需求,但是是错误的,而且有些代码也不是很好。比如他的历史栈。
http://blog.henriklarsentoft.com/2010/07/android-tabactivity-nested-activities/
发出来只是想说明下出现了一个什么错误,从而才能明白第二篇文章中为什么要那么做。在使用他的时候出现 BadTokenException,经过和本文所带的文件中文件比较,发现代码是因为我在嵌入的activity中使用自己的progressdiaog从而造成错误。正确的是应该是附带文件的代码那样,将progressdiaog提升到activitygroup中的,并在其嵌入activity中使用。
注明下附带文件出处,非本人所写。
http://www.anddev.org/view-layout-resource-problems-f27/how-to-fix-this-windowmanager-badtokenexception-t16555.html
发现了一个名词: nested activities。留待以后查找。
问题:activitygroup中的activity弹出dialog必须是static的?
[color=red]发现自己又错了。没必要在ActivityGroup中全部使用static的dialog,只需在子类实例化dialog中不要传入this而是getParent。
例如:在ActivitGroup中加入的一个activity中可以这样创建Dialog
ProgressDialog progressDialog = new ProgressDialog(getParent()); progressDialog.setMessage(getString(R.string.label_loading));
[/color]
问题:activity中调用startactivityforresult后,onactivityresult回调函数没有调用
答案在
http://stackoverflow.com/questions/4268178/startactivityforresult-from-activitygroup
I've had a similar issue. I had an ActivityGroup managing sub-activities. One of the sub-activities called a similar external intent (external to my app). It never called the onActivityResult within the sub-activity that started it.
I finally figured out/remembered that the issue is because Android will only allow a nested layer of sub-activities...ie sub-activities can't nest sub-activitites. To solve this:
call getParent().startActivityForResult from your sub-activity
your parent (the activitygroup) will be able to handle the onActivityResult. So I created a subclass of ActivityGroup and handled this onActivityResult.
You can re-route that result back to the sub-activity if you need to. Just get the current activity by getLocalActivityManager().getCurrentActivity() . My sub-activities inherit from a custom activity so I added a handleActivityResult(requestCode, resultCode, data) in that subclass for the ActivityGroup to call.
android:layout_above 将该控件的底部置于给定ID的控件之上;
android:layout_below 将该控件的底部置于给定ID的控件之下;
android:layout_toLeftOf 将该控件的右边缘与给定ID的控件左边缘对齐
android:layout_toRightOf 将该控件的左边缘与给定ID的控件右边缘对齐;
android:layout_alignBaseline 将该控件的baseline与给定ID的baseline对齐;
android:layout_alignTop 将该控件的顶部边缘与给定ID的顶部边缘对齐;
android:layout_aligandroid:layout_marginRight="40dip"nBottom 将该控件的底部边缘与给定ID的底部边缘对齐;
android:layout_alignLeft 将该控件的左边缘与给定ID的左边缘对齐;
android:layout_alignRight 将该控件的右边缘与给定ID的右边缘对齐;
android:layout_alignParentTop 如果为true,将该控件的顶部与其父控件的顶部对齐;
android:layout_alignParentBottom 如果为true,将该控件的底部与其父控件的底部对齐;
android:layout_alignParentLeft 如果为true,将该控件的左部与其父控件的左部对齐;
android:layout_alignParentRight 如果为true,将该控件的右部与其父控件的右部对齐;
android:layout_centerHorizontal 如果为true,将该控件的置于水平居中;
android:layout_centerVertical 如果为true,将该控件的置于垂直居中;
android:layout_centerInParent 如果为true,将该控件的置于父控件的中央;
android:layout_marginBottom 离某元素底边缘的距离
android:layout_marginLeft 离某元素左边缘的距离
android:layout_marginRight 离某元素右边缘的距离
android:layout_marginTop 离某元素上边缘的距离
android: layout_weight
我们可以通过设置控件的layout_weight属性以控制各个控件在布局中的相对大小。layout_weight属性是一个非负整数值。线性布局会根据该控件layout_weight值与其所处布局中所有控件layout_weight值之和的比值为该控件分配占用的区域。例如,在水平布局的LinearLayout中有两个Button,这两个Button的layout_weight属性值都为1,那么这两个按钮都会被拉伸到整个屏幕宽度的一半。如果layout_weight指为0,控件会按原大小显示,不会被拉伸;对于其余layout_weight属性值大于0的控件,系统将会减去layout_weight属性值为0的控件的宽度或者高度,再用剩余的宽度或高度按相应的比例来分配每一个控件显示的宽度或高度。剩余代码1