Details

      Description

      Problem

      Google Maps Android API v2 are not compatible with the Holo theme.

      We have experienced the same problem in our app : when Holo is not active, the maps work as expected. With Holo, the app crash.

      There are the error logs :

      05-15 10:33:55.700: E/TiApplication(25966): (main) [9931,10138] Sending event: exception on thread: main msg:java.lang.IllegalArgumentException: No view found for id 0x3e8 for fragment SupportMapFragment{436e6020 #0 id=0x3e8}; Titanium 3.1.0006,2013/05/06 12:00,2b7add3
      05-15 10:33:55.700: E/TiApplication(25966): java.lang.IllegalArgumentException: No view found for id 0x3e8 for fragment SupportMapFragment{436e6020 #0 id=0x3e8}
      05-15 10:33:55.700: E/TiApplication(25966): 	at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:865)
      05-15 10:33:55.700: E/TiApplication(25966): 	at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1083)
      05-15 10:33:55.700: E/TiApplication(25966): 	at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:635)
      05-15 10:33:55.700: E/TiApplication(25966): 	at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1431)
      05-15 10:33:55.700: E/TiApplication(25966): 	at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:420)
      05-15 10:33:55.700: E/TiApplication(25966): 	at android.os.Handler.handleCallback(Handler.java:605)
      05-15 10:33:55.700: E/TiApplication(25966): 	at android.os.Handler.dispatchMessage(Handler.java:92)
      05-15 10:33:55.700: E/TiApplication(25966): 	at android.os.Looper.loop(Looper.java:137)
      05-15 10:33:55.700: E/TiApplication(25966): 	at android.app.ActivityThread.main(ActivityThread.java:4507)
      05-15 10:33:55.700: E/TiApplication(25966): 	at java.lang.reflect.Method.invokeNative(Native Method)
      05-15 10:33:55.700: E/TiApplication(25966): 	at java.lang.reflect.Method.invoke(Method.java:511)
      05-15 10:33:55.700: E/TiApplication(25966): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
      05-15 10:33:55.700: E/TiApplication(25966): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
      05-15 10:33:55.700: E/TiApplication(25966): 	at dalvik.system.NativeStart.main(Native Method)
      05-15 10:33:55.705: E/AndroidRuntime(25966): FATAL EXCEPTION: main
      

      I have minimised his code to reproduce the error. There is the code for app.js :

      (function() {
      	function ApplicationWindow(title) {
      	    var self = Ti.UI.createWindow({ title:title });
      	  
      	    self.activity.onCreateOptionsMenu = function (e) {
      	        var actionBar = self.activity.actionBar;
      	        actionBar.setTitle('Action bar');
      	        actionBar.displayHomeAsUp = true;
      	        actionBar.onHomeIconItemSelected = function () {};
      	    };
      	
      	    if (title === 'Map') {   
      	        var MapModule = require('ti.map');
      	        var mapview = MapModule.createView({
      	            region: {latitude:33.74511, longitude:-84.38993,
      	                    latitudeDelta:0.01, longitudeDelta:0.01}
      	        });
      	
      	        self.add(mapview);
      	    }
      	
      	    return self;
      	};
       
       
          var tabGroup = Ti.UI.createTabGroup();
      	var tabs = ['One', 'Two', 'Map'];
      	for (var i=0, l=tabs.length; i<l; i+=1) {
      		var win = new ApplicationWindow(tabs[i]),
      		    tab = Ti.UI.createTab({title: tabs[i], window: win});
       
      		tabGroup.addTab(tab);
      	}
       
      	tabGroup.open();
      })();
      

      And there is the tiapp.xml file :

      <?xml version="1.0" encoding="UTF-8"?>
      <ti:app xmlns:ti="http://ti.appcelerator.org">
          <id>com.enera.tabbedmap</id>
          <name>Test</name>
          <version>1.0</version>
          <publisher>romainsalles</publisher>
          <url>http://</url>
          <description>not specified</description>
          <copyright>foo</copyright>
          <icon>appicon.png</icon>
          <persistent-wifi>false</persistent-wifi>
          <prerendered-icon>false</prerendered-icon>
          <statusbar-style>default</statusbar-style>
          <statusbar-hidden>false</statusbar-hidden>
          <fullscreen>false</fullscreen>
          <navbar-hidden>false</navbar-hidden>
          <analytics>true</analytics>
          <guid>22bd9dd2-b7a9-482b-9b64-e21eb739d636</guid>
          <property name="ti.ui.defaultunit" type="string">system</property>
          <iphone>
              <orientations device="iphone">
                  <orientation>Ti.UI.PORTRAIT</orientation>
              </orientations>
              <orientations device="ipad">
                  <orientation>Ti.UI.PORTRAIT</orientation>
                  <orientation>Ti.UI.UPSIDE_PORTRAIT</orientation>
                  <orientation>Ti.UI.LANDSCAPE_LEFT</orientation>
                  <orientation>Ti.UI.LANDSCAPE_RIGHT</orientation>
              </orientations>
          </iphone>
          <android xmlns:android="http://schemas.android.com/apk/res/android">
              <manifest>
                  <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="14"/>
                  <uses-permission android:name="android.permission.INTERNET"/>
                  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
                  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
                  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
                  <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
                  <uses-feature android:glEsVersion="0x00020000" android:required="true"/>
                  <uses-permission android:name="com.enera.tabbedmap.permission.MAPS_RECEIVE"/>
                  <permission android:name="com.enera.tabbedmap.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>
                  <application android:theme="@android:style/Theme.Holo">
                      <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyDYBIo7m2GkNpiwQ2VpwfH_FwOtm8a_V-w"/>
                  </application>
              </manifest>
          </android>
          <mobileweb>
              <precache/>
              <splash>
                  <enabled>true</enabled>
                  <inline-css-images>true</inline-css-images>
              </splash>
              <theme>default</theme>
          </mobileweb>
          <modules>
          	<module platform="android">ti.map</module>	
          </modules>
          <deployment-targets>
              <target device="blackberry">false</target>
              <target device="android">true</target>
              <target device="ipad">true</target>
              <target device="iphone">true</target>
              <target device="mobileweb">true</target>
              <target device="tizen">false</target>
          </deployment-targets>
          <sdk-version>3.1.0.GA</sdk-version>
      </ti:app>
      

      When the app opens, just click on the Map tab and it will crash on devices with Holo.

      We have tested on :

      • Samsung Galaxy Ace (GT-S5830), android 2.3.3 -> ok (do not supports Holo)
      • Sony Xperia (LT15i), android 2.3.3 -> ok (do not supports Holo)
      • Samsung Galaxy S (GTI9000), android 2.3.3 -> ok (do not supports Holo)
      • Samsung S2 (GT-I9100P), android 4.0.3 -> crash (supports Holo)
      • Nexus S, android 4.1.2 -> crash (supports Holo)
      • Samsung S3 (GT-I93000), android 4.1.2 -> crash (supports Holo)

      It's really annoying : we have worked a lot to make our app more android friendly (holo, maps v2, GCM, new UX ...) and we can't publish it because of this problem.

      Associated Q&A thread

      http://developer.appcelerator.com/question/151567/google-maps-v2-module-crashes-when-view-placed-in-tab-group#comment-172642

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                hpham Hieu Pham
                Reporter:
                romain.salles Romain Salles
                Reviewer:
                Vishal Duggal (Inactive)
              • Watchers:
                0 Start watching this issue

                Dates

                • Due:
                  Created:
                  Updated:
                  Resolved:

                  Backbone Issue Sync

                  • Titanium SDK/CLI <> Titanium Mobile
                    Synced with:
                    TIMOB-16483
                    Sync status:
                    ERROR
                    Last received:
                    Last sent:

                    Git Source Code