diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-12-14 01:01:21 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-12-14 01:01:21 -0800 |
commit | a8eaaa1027e09daab01224cfe4a27b19570d35b0 (patch) | |
tree | 302293a3f1f27e9c20858eee8c5f75249bf948fa | |
parent | e7c1b11ec892fbb1eb053f9aa4f6839031b19c1c (diff) | |
parent | acdef59d66094f11da4a6f57194747dc06f73da2 (diff) | |
download | frameworks_base-a8eaaa1027e09daab01224cfe4a27b19570d35b0.zip frameworks_base-a8eaaa1027e09daab01224cfe4a27b19570d35b0.tar.gz frameworks_base-a8eaaa1027e09daab01224cfe4a27b19570d35b0.tar.bz2 |
Merge change If90ee7e2 into eclair-mr2
* changes:
Fix TabHost NPE when there are no tabs
-rw-r--r-- | core/java/android/widget/TabHost.java | 5 | ||||
-rw-r--r-- | core/java/android/widget/TabWidget.java | 7 |
2 files changed, 9 insertions, 3 deletions
diff --git a/core/java/android/widget/TabHost.java b/core/java/android/widget/TabHost.java index 31920e7..412f817 100644 --- a/core/java/android/widget/TabHost.java +++ b/core/java/android/widget/TabHost.java @@ -279,6 +279,7 @@ mTabHost.addTab(TAB_TAG_1, "Hello, world!", "Tab 1"); if (!handled && (event.getAction() == KeyEvent.ACTION_DOWN) && (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_UP) + && (mCurrentView != null) && (mCurrentView.isRootNamespace()) && (mCurrentView.hasFocus()) && (mCurrentView.findFocus().focusSearch(View.FOCUS_UP) == null)) { @@ -292,7 +293,9 @@ mTabHost.addTab(TAB_TAG_1, "Hello, world!", "Tab 1"); @Override public void dispatchWindowFocusChanged(boolean hasFocus) { - mCurrentView.dispatchWindowFocusChanged(hasFocus); + if (mCurrentView != null){ + mCurrentView.dispatchWindowFocusChanged(hasFocus); + } } public void setCurrentTab(int index) { diff --git a/core/java/android/widget/TabWidget.java b/core/java/android/widget/TabWidget.java index 2ba6268..c12d098 100644 --- a/core/java/android/widget/TabWidget.java +++ b/core/java/android/widget/TabWidget.java @@ -183,7 +183,7 @@ public class TabWidget extends LinearLayout implements OnFocusChangeListener { @Override public void childDrawableStateChanged(View child) { - if (child == getChildTabViewAt(mSelectedTab)) { + if (getTabCount() > 0 && child == getChildTabViewAt(mSelectedTab)) { // To make sure that the bottom strip is redrawn invalidate(); } @@ -194,6 +194,9 @@ public class TabWidget extends LinearLayout implements OnFocusChangeListener { public void dispatchDraw(Canvas canvas) { super.dispatchDraw(canvas); + // Do nothing if there are no tabs. + if (getTabCount() == 0) return; + // If the user specified a custom view for the tab indicators, then // do not draw the bottom strips. if (!mDrawBottomStrips) { @@ -347,7 +350,7 @@ public class TabWidget extends LinearLayout implements OnFocusChangeListener { } public void onFocusChange(View v, boolean hasFocus) { - if (v == this && hasFocus) { + if (v == this && hasFocus && getTabCount() > 0) { getChildTabViewAt(mSelectedTab).requestFocus(); return; } |