From c4e57e23f99f4cea6fcca870a95f7f20a6edfaf2 Mon Sep 17 00:00:00 2001 From: Adam Powell Date: Fri, 24 Feb 2012 19:24:26 -0800 Subject: Fix bug 6065890 - Correct callback sequence for action bar tab switching Keep the callback behavior consistent when action bar tabs collapse into a spinner. Change-Id: Ia82e55d816a92b7ec746e1d25486bc9d2c0778f4 --- core/java/android/widget/Spinner.java | 13 +++++++++++++ .../android/internal/widget/ScrollingTabContainerView.java | 10 +++------- 2 files changed, 16 insertions(+), 7 deletions(-) (limited to 'core/java') diff --git a/core/java/android/widget/Spinner.java b/core/java/android/widget/Spinner.java index ecf19b3ee226..2cacbdcac31a 100644 --- a/core/java/android/widget/Spinner.java +++ b/core/java/android/widget/Spinner.java @@ -282,6 +282,13 @@ public class Spinner extends AbsSpinner implements OnClickListener { throw new RuntimeException("setOnItemClickListener cannot be used with a spinner."); } + /** + * @hide internal use only + */ + public void setOnItemClickListenerInt(OnItemClickListener l) { + super.setOnItemClickListener(l); + } + @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); @@ -707,6 +714,9 @@ public class Spinner extends AbsSpinner implements OnClickListener { public void onClick(DialogInterface dialog, int which) { setSelection(which); + if (mOnItemClickListener != null) { + performItemClick(null, which, mListAdapter.getItemId(which)); + } dismiss(); } } @@ -724,6 +734,9 @@ public class Spinner extends AbsSpinner implements OnClickListener { setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView parent, View v, int position, long id) { Spinner.this.setSelection(position); + if (mOnItemClickListener != null) { + Spinner.this.performItemClick(null, position, mAdapter.getItemId(position)); + } dismiss(); } }); diff --git a/core/java/com/android/internal/widget/ScrollingTabContainerView.java b/core/java/com/android/internal/widget/ScrollingTabContainerView.java index 25b0065fd7fe..1767d6841530 100644 --- a/core/java/com/android/internal/widget/ScrollingTabContainerView.java +++ b/core/java/com/android/internal/widget/ScrollingTabContainerView.java @@ -45,7 +45,7 @@ import android.widget.TextView; * across different configurations or circumstances. */ public class ScrollingTabContainerView extends HorizontalScrollView - implements AdapterView.OnItemSelectedListener { + implements AdapterView.OnItemClickListener { private static final String TAG = "ScrollingTabContainerView"; Runnable mTabSelector; private TabClickListener mTabClickListener; @@ -197,7 +197,7 @@ public class ScrollingTabContainerView extends HorizontalScrollView com.android.internal.R.attr.actionDropDownStyle); spinner.setLayoutParams(new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT)); - spinner.setOnItemSelectedListener(this); + spinner.setOnItemClickListenerInt(this); return spinner; } @@ -347,15 +347,11 @@ public class ScrollingTabContainerView extends HorizontalScrollView } @Override - public void onItemSelected(AdapterView parent, View view, int position, long id) { + public void onItemClick(AdapterView parent, View view, int position, long id) { TabView tabView = (TabView) view; tabView.getTab().select(); } - @Override - public void onNothingSelected(AdapterView parent) { - } - private class TabView extends LinearLayout { private ActionBar.Tab mTab; private TextView mTextView; -- cgit v1.2.3