summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorAndroid (Google) Code Review <android-gerrit@google.com>2009-12-14 01:01:21 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2009-12-14 01:01:21 -0800
commita8eaaa1027e09daab01224cfe4a27b19570d35b0 (patch)
tree302293a3f1f27e9c20858eee8c5f75249bf948fa /core
parente7c1b11ec892fbb1eb053f9aa4f6839031b19c1c (diff)
parentacdef59d66094f11da4a6f57194747dc06f73da2 (diff)
downloadframeworks_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
Diffstat (limited to 'core')
-rw-r--r--core/java/android/widget/TabHost.java5
-rw-r--r--core/java/android/widget/TabWidget.java7
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;
}