I tested this and you are right that there is no caching.  It is just
a missing dependency in the ant scripts.  It doesn't seem to have
anything to do with inlining either.  The platform creates a table
somewhere corresponding the R.layout values to the layout files and
apparently is depending on the alphabetic order.

On Dec 5, 11:51 pm, jotobjects <[email protected]> wrote:
> On Dec 5, 10:15 pm, Romain Guy <[email protected]> wrote:
>
> > The platform does not cache layout ids. It looks like your resources
> > were recompiled but not the source code. Resources are compiled to
> > generate static classes (like R.layout) which contain static fields
> > (R.layout.main) which are themselves inlined when you compile your
> > Java classes. If you regenerate the resources without recompiling the
> > Java code, your compiled Java code will use the previously inlined
> > static field and not the new one. So if you rename resources, simply
> > perform a clean build of your project :)
>
> Hm. Let's see the Java code has not changed.  What creates the
> correspondence between the R.layout values and the actual layout
> files?  The inlining is irrelevant isn't it?
>
>
>
> > On Sat, Dec 5, 2009 at 10:09 PM, jotobjects <[email protected]> wrote:
> > > I did replicate this problem.  It turns out my code was correct but
> > > the platform can screw up the correspondence between the R.layout
> > > values and the layout files - due perhaps to caching(?)
>
> > > Here is how to show this problem.  The R.layout values are numbered in
> > > order of the alphabetical order of the layout file names.
>
> > > (1) Create a1.xml and main.xml layout files and install the app
> > > (2) Rename a1.xml to mb.xml and reinstall the app
>
> > > At this point mb.xml has the R.layout number that main.xml had the
> > > first time the app was installed.  setContentView(R.layout.main) will
> > > now inflate mb.xml instead of main.xml.  This is what was happening to
> > > me - it was loading mymapview.xml when it should have been loading
> > > main.xml.  You can have other kinds of problems also such as having it
> > > try to load a layout file that no longer exists if you remove a layout
> > > file and reinstall with fewer layout files.
>
> > > I do not know of a workaround other than renaming the layout files
> > > back to their original values.
>
> > > The problem appears to be due to some kind of platform caching that
> > > persists even if the application is removed.  Is there a bug already
> > > filed for this problem?
>
> > > On Dec 4, 9:43 am, jotobjects <[email protected]> wrote:
> > >> Update on this - I stripped it down to a simple case and now the
> > >> problem is not there :-).  I should add the main activity is an
> > >> ActivityGroup that starts the MapActivity.  This is now working
> > >> correctly with a separate layout file for the MapView.
>
> > >> I'll try to isolate what I was doing wrong in the first attempt and
> > >> post that information.
>
> > >> On Dec 3, 4:11 pm, jotobjects <[email protected]> wrote:
>
> > >> > Thanks.  I'll see if I can replicate the problem in a simple example
> > >> > (the case I have has a lot of other stuff in it) and post that when I
> > >> > get a chance.
>
> > >> > On Dec 3, 3:49 pm, TreKing <[email protected]> wrote:
>
> > >> > > What I meant was to make sure you were doing exactly what you posted,
> > >> > > namely setContentView(R.layout.main); in your main activity
> > >> > > and setContentView(R.layout. mymapvieww); in your MapActivity.
>
> > >> > > What does your R.layout.main look like? Could you possibly have  
> > >> > > reference
> > >> > > to the mapview layout in there somehow?
> > >> > > What happens if you try to set a different layout in your main 
> > >> > > activity
> > >> > > (like a simple LinearLayout that does nothing)?
> > >> > > Do you have anything else in onCreate() before setContentView()?
>
> > >> > > Grasping at straws here ...
>
> > >> > > -------------------------------------------------------------------------------------------------
> > >> > > TreKing - Chicago transit tracking app for Android-powered 
> > >> > > deviceshttp://sites.google.com/site/rezmobileapps/treking
>
> > >> > > On Thu, Dec 3, 2009 at 4:55 PM, jotobjects <[email protected]> 
> > >> > > wrote:
> > >> > > > How do you "set the correct layout for the correct activity"?  Is
> > >> > > > there something to put in the manifest or the layout file?  I'm 
> > >> > > > doing
> > >> > > > this in the main Activity -
>
> > >> > > >            setContentView(R.layout.main);
>
> > >> > > > and this in the MapActivity -
>
> > >> > > >        setContentView(R.layout.mymapvieww);
>
> > >> > > > It dies at the first step - setContentView(R.layout.main) with this
> > >> > > > message "MapViews can only be created inside instances of
> > >> > > > MapActivity".  If I remove the file layout/mymapview.xml the 
> > >> > > > problem
> > >> > > > goes away.
>
> > >> > > > On Dec 3, 2:06 pm, TreKing <[email protected]> wrote:
> > >> > > > > Sounds odd. I have the same setup (map activity that is launched 
> > >> > > > > from a
> > >> > > > > primary activity, each with their own layout) and have never seen
> > >> > > > anything
> > >> > > > > like that.
>
> > >> > > > > I would double check your layouts and make sure that you are, in 
> > >> > > > > fact,
> > >> > > > > setting the correct layout for the correct activity. From the 
> > >> > > > > error you
> > >> > > > > mentioned it would appear that you have a mapview element in the 
> > >> > > > > main
> > >> > > > layout
> > >> > > > > file or that you're loading the mapview layout by mistake in the 
> > >> > > > > main
> > >> > > > > activity.
>
> > >> > > > > Otherwise maybe post some code and your layouts?
>
> > >> > > > -------------------------------------------------------------------------------------------------
> > >> > > > > TreKing - Chicago transit tracking app for Android-powered 
> > >> > > > > deviceshttp://
> > >> > > > sites.google.com/site/rezmobileapps/treking
>
> > >> > > > > On Thu, Dec 3, 2009 at 3:13 PM, jotobjects 
> > >> > > > > <[email protected]> wrote:
> > >> > > > > > I am getting an error creating a MapView with a layout file.  
> > >> > > > > > The app
> > >> > > > > > has two activities with different layout files.  The main 
> > >> > > > > > activity
> > >> > > > > > launched from Home is not a MapAcitivity.  It starts the second
> > >> > > > > > activity (MapActivity).  The error occurs in onCreate() for 
> > >> > > > > > the first
> > >> > > > > > Activity in setContentView(R.layout.main).  The error message 
> > >> > > > > > is
>
> > >> > > > > > "MapViews can only be created inside instances of MapActivity"
>
> > >> > > > > > which makes sense except main.xml does not have a MapView 
> > >> > > > > > element.
> > >> > > > > > The intention was to to call 
> > >> > > > > > setContentView(R.layout.mymapview) in the
> > >> > > > > > MapActivity. But the MapView is being created with the context 
> > >> > > > > > of the
> > >> > > > > > main (non-map) Activity instead.
>
> > >> > > > > > I have a workaround (directly instantiating the MapView 
> > >> > > > > > without a
> > >> > > > > > layout file) but just wondering if there is a way to control 
> > >> > > > > > when the
> > >> > > > > > layout file Views are created.
>
> > >> > > > > > --
> > >> > > > > > 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]<android-developers%[email protected]>
> > >> > > > <android-developers%[email protected]<android-developers%[email protected]>
>
> > >> > > > > > For more options, visit this group at
> > >> > > > > >http://groups.google.com/group/android-developers?hl=en
>
> > >> > > > --
> > >> > > > 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]<android-developers%[email protected]>
> > >> > > > For more options, visit this group at
> > >> > > >http://groups.google.com/group/android-developers?hl=en
>
> > > --
> > > 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
>
> > --
> > 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