From e92ea3474de7998a016b48bab4e9a4bbafd5b549 Mon Sep 17 00:00:00 2001 From: Adam Powell Date: Wed, 14 Jul 2010 14:45:50 -0700 Subject: [PATCH] Fix bug 2835056 - ActionBar doesn't update title properly when set in onCreate Change-Id: I593315db8df0190c2702a87ebef293e5f798823d --- .../internal/widget/ActionBarView.java | 24 +++++++++++++++++++ .../internal/policy/impl/PhoneWindow.java | 4 ++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/core/java/com/android/internal/widget/ActionBarView.java b/core/java/com/android/internal/widget/ActionBarView.java index 48707b9595485..fbff8ae4ae5e3 100644 --- a/core/java/com/android/internal/widget/ActionBarView.java +++ b/core/java/com/android/internal/widget/ActionBarView.java @@ -91,6 +91,7 @@ public class ActionBarView extends ViewGroup { private View mCustomNavView; private boolean mShowMenu; + private boolean mUserTitle; private MenuBuilder mOptionsMenu; private ActionMenuView mMenuView; @@ -212,7 +213,30 @@ public class ActionBarView extends ViewGroup { return mTitle; } + /** + * Set the action bar title. This will always replace or override window titles. + * @param title Title to set + * + * @see #setWindowTitle(CharSequence) + */ public void setTitle(CharSequence title) { + mUserTitle = true; + setTitleImpl(title); + } + + /** + * Set the window title. A window title will always be replaced or overridden by a user title. + * @param title Title to set + * + * @see #setTitle(CharSequence) + */ + public void setWindowTitle(CharSequence title) { + if (!mUserTitle) { + setTitleImpl(title); + } + } + + private void setTitleImpl(CharSequence title) { mTitle = title; if (mTitleView != null) { mTitleView.setText(title); diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java index 8321473c39b60..070d1e8fc3e10 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java @@ -284,7 +284,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { if (mTitleView != null) { mTitleView.setText(title); } else if (mActionBar != null) { - mActionBar.setTitle(title); + mActionBar.setWindowTitle(title); } mTitle = title; } @@ -2334,7 +2334,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { } else { mActionBar = (ActionBarView) findViewById(com.android.internal.R.id.action_bar); if (mActionBar != null && mActionBar.getTitle() == null) { - mActionBar.setTitle(mTitle); + mActionBar.setWindowTitle(mTitle); } } }