@@ -76,6 +76,7 @@ public class ResolverActivity extends AlertActivity implements AdapterView.OnIte
7676 private int mIconDpi ;
7777 private int mIconSize ;
7878 private int mMaxColumns ;
79+ private int mLastSelected = GridView .INVALID_POSITION ;
7980
8081 private boolean mRegistered ;
8182 private final PackageMonitor mPackageMonitor = new PackageMonitor () {
@@ -247,6 +248,7 @@ protected void onRestoreInstanceState(Bundle savedInstanceState) {
247248 if (mAlwaysUseOption ) {
248249 final int checkedPos = mGrid .getCheckedItemPosition ();
249250 final boolean enabled = checkedPos != GridView .INVALID_POSITION ;
251+ mLastSelected = checkedPos ;
250252 mAlwaysButton .setEnabled (enabled );
251253 mOnceButton .setEnabled (enabled );
252254 if (enabled ) {
@@ -257,14 +259,15 @@ protected void onRestoreInstanceState(Bundle savedInstanceState) {
257259
258260 @ Override
259261 public void onItemClick (AdapterView <?> parent , View view , int position , long id ) {
260- if ( mAlwaysUseOption ) {
261- final int checkedPos = mGrid . getCheckedItemPosition () ;
262- final boolean enabled = checkedPos != GridView . INVALID_POSITION ;
263- mAlwaysButton .setEnabled (enabled );
264- mOnceButton .setEnabled (enabled );
265- if (enabled ) {
262+ final int checkedPos = mGrid . getCheckedItemPosition ();
263+ final boolean hasValidSelection = checkedPos != GridView . INVALID_POSITION ;
264+ if (! hasValidSelection || ( mAlwaysUseOption && mLastSelected ! = checkedPos )) {
265+ mAlwaysButton .setEnabled (hasValidSelection );
266+ mOnceButton .setEnabled (hasValidSelection );
267+ if (hasValidSelection ) {
266268 mGrid .smoothScrollToPosition (checkedPos );
267269 }
270+ mLastSelected = checkedPos ;
268271 } else {
269272 startSelected (position , false );
270273 }
0 commit comments