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
-~----------~----~----~----~------~----~------~--~---

Reply via email to