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

