Thanks that helps a lot. So doesn't the ListView in a layout have to use the id "@android:id/list" if it is being used from a ListActivity? Given that, can you still override this id after inflation if 2 instances of this layout are being used on 2 ListActivities that are inside tabs?
On May 7, 2:26 am, Romain Guy <[email protected]> wrote: > > Ok that prompts a few questions: > > 1) Can you elaborate on your last sentence: "But that's true within an > > activity only." Are you saying that the identifier is the id plus the > > activity? I have 2 different activities (on 2 tabs, actually). > > There is no problem using the same id in two different activities. And > there is no problem using the same id inside the same activity if > you're careful about what you're doing (for instance, if the views > with the shared ids do not need to save any state.) In your case, > because the activities are part of a set of tabs, they are actually > tied to a unique context which means you will run into problems with > shared ids. > > > 2) How do you share a layout and use it multiple times, then? If the > > id is set in XML, and you have multiple instances, won't they save and > > restore state incorrectly, then? > > They will do it correctly if they are in different activities (and not > activities inside tabs.) Note that you could manually override the id > after inflation or use <include/> to override the id. > > > 3) What about the items within a ListView? Don't the all have the > > same id(s)? Wouldn't this cause a problem when saving their state? Or > > does the ListView do something magic to prevent such a problem? > > ListView items should not be saving state because they are recycled so > the adapter will set their state anyway. > > > > > > > On May 7, 1:54 am, Romain Guy <[email protected]> wrote: > >> It's ok except when you need the views to save theirstate. The id is > >> what identifies views when theirstateis saved so the toolkit simply > >> think that your two list views are the same. But that's true within an > >> activity only. > > >> On Wed, May 6, 2009 at 11:44 AM, Toph <[email protected]> wrote: > > >> > Yes they do, but is that wrong? I thought it was ok to have multiple > >> > views with the same id. They are part of 2 different activities that > >> > share a common layout. > > >> > On Apr 27, 10:17 pm, Romain Guy <[email protected]> wrote: > >> >> Your two list views probably have the same id. > > >> >> On Sat, Apr 25, 2009 at 11:00 AM, Chris <[email protected]> wrote: > > >> >> > Hi, > > >> >> > I have TabActivity that uses 2 other ListActivities for the tabs. > >> >> > Both underlying ListViews are set to CHOICE_MODE_MULTIPLE. > >> >> > When I run the following sequence of events, I get a strange result: > >> >> > 1) Setup one activity (tab) and itsListViewusing a CursorAdapter, > >> >> > including checking some items on the list > >> >> > 2)Reorientthescreen(openthekeyboard) > >> >> > 3) Setup the second activity (tab) and itsListViewusing a > >> >> > CursorAdapter, including checking some items on the list > >> >> > 4) Switch back to the first tab > > >> >> > At this point, I can see in Eclipse that although (of course) each > >> >> >ListViewis a distinct object, the internal variable used to store the > >> >> >checkedstateof items, called mCheckStates, is the SAME OBJECT > >> >> > REFERENCE in each of the ListViews. > > >> >> > Clearly this is an issue, since the two views should not share the > >> >> >checkedstateof items between them. > > >> >> > If I skip step #2, this does not occur > > >> >> > Here is a bit more detail: > >> >> > After Step 1: ListView1 is object reference @1, ListView1.mCheckStates > >> >> > is object reference @2 > >> >> > After Step 2: ListView1 is object reference @3, ListView1.mCheckStates > >> >> > is object reference @4 (the reorientation recreates the views) > >> >> > After Step 3: ListView2 is object reference @5, ListView1.mCheckStates > >> >> > is object reference @2 <-- note the reuse of this reference from step > >> >> > #1, not sure how/why > >> >> > After Step 4: ListView1 is object reference @3 (unchanged), > >> >> > ListView1.mCheckStates is object reference @2 (changed) <-- same as > >> >> > ListView2.mCheckStates > > >> >> > Please help > > >> >> > Thanks > > >> >> -- > >> >> Romain Guy > >> >> Android framework engineer > >> >> [email protected] > > >> >> Note: please don't send private questions to me, as I don't have time > >> >> to provide private support. All such questions should be posted on > >> >> public forums, where I and others can see and answer them > > >> -- > >> Romain Guy > >> Android framework engineer > >> [email protected] > > >> Note: please don't send private questions to me, as I don't have time > >> to provide private support. All such questions should be posted on > >> public forums, where I and others can see and answer them > > -- > Romain Guy > Android framework engineer > [email protected] > > Note: please don't send private questions to me, as I don't have time > to provide private support. All such questions should be posted on > public forums, where I and others can see and answer them --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---

