Thierry,
I think you are seeing interaction between the activity's
onRestoreInstanceState and your setSelection.
Should be pretty easy to check by overriding onRestoreInstanceState in
ActivityA and/or the spinner and logging them - as well as your code
that calls setSelection. Then you can re-run both scenarios from your
original email and watch the exact sequence of events.
-- Kostya
02.03.2011 12:52, Thierry Legras ?????:
Okay, as I could not find a way to fix that smoothly, I just used a
flag ignoreNextOnItemSelected like described hereafter. Seems to me a
dirty hack :(
// called from another activity context
updateSpinnerSelection(int newposition) {
mPosition = newposition; // store it
mSpinner.setSelection(newposition);
ignoreNextOnItemSelected= true;
}
and
public void onItemSelected(AdapterView<?> arg0, View arg1, int position,
long rowid) {
if (ignoreNextOnItemSelected) {
// position might be outdate ?!?! just reapply mPosition
ignoreNextOnItemSelected = false;
// required
mSpinner.setSelection(mPosition);
} else {
mPosition = position;
... // do usual stuff
}
}
2011/2/25 Thierry Legras <tleg...@gmail.com <mailto:tleg...@gmail.com>>
Hi,
I have a strange behavior in a very specific case and wonder if
the issue comes from my code or not.
I have a TabActivity A with 2 tabs:
- Tab 1 content is created as a view with a spinner in it
- Tab 2 content is an activity B.
I want at some point when Tab2 is selected to switch to Tab 1 and
update spinner selection in it.
Case 1)
Tab 2 is selected, from Activity B context:
activityA.updateSpinnerSelection(newposition);
activityA.getTabHost().setCurrentTabByTag(tab1tag);
later AdapterView.OnItemSelectedListener.onItemSelected is called
with my newposition
=> so this /usually /works fine:
Case 2)
Tab 2 is selected, from Activity B context, but before doing the
same things, if the users for some reason *first open a new
acticity C on top of B (like preference screen) and close this
activity C*, (so A and B are paused then resumed), then if I later
try again the same things:
activityA.updateSpinnerSelection(newposition);
activityA.getTabHost().setCurrentTabByTag(tab1tag);
so far so goog, but later
AdapterView.OnItemSelectedListener.onItemSelected is called not
with newposition as argument *but with the older position value*.
I hope the description is clear.
Did I missed something? or could this behavior dues to some bug in
Android?
Thanks for any help,
--
Thierry.
--
Thierry.
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--
Kostya Vasilyev -- http://kmansoft.wordpress.com
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en