Fix bug 2859423 - action bar: need a way to choose item in spinner
Change-Id: Idf9c222e5d8f27b4339a6df7d14f3f10dcb4be2c
diff --git a/core/java/com/android/internal/app/ActionBarImpl.java b/core/java/com/android/internal/app/ActionBarImpl.java
index ec6d2be..992fdee 100644
--- a/core/java/com/android/internal/app/ActionBarImpl.java
+++ b/core/java/com/android/internal/app/ActionBarImpl.java
@@ -17,7 +17,6 @@
package com.android.internal.app;
import com.android.internal.view.menu.MenuBuilder;
-import com.android.internal.view.menu.MenuItemImpl;
import com.android.internal.view.menu.MenuPopupHelper;
import com.android.internal.view.menu.SubMenuBuilder;
import com.android.internal.widget.ActionBarContextView;
@@ -114,10 +113,18 @@
}
public void setDropdownNavigationMode(SpinnerAdapter adapter, NavigationCallback callback) {
+ setDropdownNavigationMode(adapter, callback, -1);
+ }
+
+ public void setDropdownNavigationMode(SpinnerAdapter adapter, NavigationCallback callback,
+ int defaultSelectedPosition) {
cleanupTabs();
- mActionView.setCallback(callback);
mActionView.setNavigationMode(NAVIGATION_MODE_DROPDOWN_LIST);
mActionView.setDropdownAdapter(adapter);
+ if (defaultSelectedPosition >= 0) {
+ mActionView.setDropdownSelectedPosition(defaultSelectedPosition);
+ }
+ mActionView.setCallback(callback);
}
public void setStandardNavigationMode() {
@@ -139,6 +146,31 @@
mActionView.setCallback(null);
}
+ public void setSelectedNavigationItem(int position) {
+ switch (mActionView.getNavigationMode()) {
+ case NAVIGATION_MODE_TABS:
+ selectTab(mTabs.get(position));
+ break;
+ case NAVIGATION_MODE_DROPDOWN_LIST:
+ mActionView.setDropdownSelectedPosition(position);
+ break;
+ default:
+ throw new IllegalStateException(
+ "setSelectedNavigationItem not valid for current navigation mode");
+ }
+ }
+
+ public int getSelectedNavigationItem() {
+ switch (mActionView.getNavigationMode()) {
+ case NAVIGATION_MODE_TABS:
+ return mSelectedTab.getPosition();
+ case NAVIGATION_MODE_DROPDOWN_LIST:
+ return mActionView.getDropdownSelectedPosition();
+ default:
+ return -1;
+ }
+ }
+
private void cleanupTabs() {
if (mSelectedTab != null) {
selectTab(null);
@@ -330,11 +362,6 @@
trans.commit();
}
- @Override
- public void selectTabAt(int position) {
- selectTab(mTabs.get(position));
- }
-
/**
* @hide
*/