OSDN Git Service

DO NOT MERGE Cherry-pick of cd59febcea2 from master
authorGilles Debunne <debunne@google.com>
Fri, 25 Feb 2011 22:34:20 +0000 (14:34 -0800)
committerJason Chen <jasonchen@google.com>
Wed, 2 Mar 2011 00:46:36 +0000 (16:46 -0800)
AIOOB exception fix in TabWidget

Bug http://code.google.com/p/android/issues/detail?id=15005

The problem was not specific to the legacy theme. The code that first
measure the tab's width with no contraint was incorrectly using the
mImposedTabsWidth array which could not have the right size if a
child was added.

The first measure after a child is added should indeed crash. Could
be investigated. This fix is sure anyway.

Change-Id: If5015aaa2d5574939fd5d6c6362ed6db94d35d4a

core/java/android/widget/TabWidget.java

index 22f6f4e..d74ef24 100644 (file)
@@ -174,8 +174,8 @@ public class TabWidget extends LinearLayout implements OnFocusChangeListener {
     void measureHorizontal(int widthMeasureSpec, int heightMeasureSpec) {
         // First, measure with no constraint
         final int unspecifiedWidth = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
-        super.measureHorizontal(unspecifiedWidth, heightMeasureSpec);
         mImposedTabsHeight = -1;
+        super.measureHorizontal(unspecifiedWidth, heightMeasureSpec);
 
         int extraWidth = getMeasuredWidth() - MeasureSpec.getSize(widthMeasureSpec);
         if (extraWidth > 0) {