java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState

Appcelerator JIRA | Romain Salles | 4 years ago
  1. 0

    h6.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 : {code:bash} 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 {code} I have minimised his code to reproduce the error. There is the code for *app.js* : {code:javascript} (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(); })(); {code} And there is the *tiapp.xml* file : {code:xml} <?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> {code} 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. h6.Associated Q&A thread http://developer.appcelerator.com/question/151567/google-maps-v2-module-crashes-when-view-placed-in-tab-group#comment-172642

    Appcelerator JIRA | 4 years ago | Romain Salles
    java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
  2. 0

    [TIMOB-13864] Android: Maps v2 crashes inside a tab - Appcelerator JIRA

    appcelerator.org | 1 year ago
    java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
  3. 0

    GitHub comment 48#203792961

    GitHub | 10 months ago | dineshkoli
    java.lang.NoClassDefFoundError: ti.map.TiUIMapView
  4. Speed up your debug routine!

    Automated exception search integrated into your IDE

  5. 0

    GitHub comment 15#243446450

    GitHub | 5 months ago | CREATIVE-KAIZEN
    java.lang.VerifyError: com/google/android/gms/maps/SupportMapFragment
  6. 0

    Version 3.0.1 is crashing on Titanium SDK 6

    GitHub | 2 months ago | ulizama
    java.lang.NoClassDefFoundError: com.google.android.gms.maps.GoogleMapOptions
Not finding the right solution?
Take a tour to get the most out of Samebug.

Tired of useless tips?

Automated exception search integrated into your IDE

Root Cause Analysis

  1. java.lang.IllegalStateException

    Can not perform this action after onSaveInstanceState

    at android.support.v4.app.FragmentManagerImpl.checkStateLoss()
  2. Android Support v4
    BackStackRecord.commit
    1. android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1314)
    2. android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1325)
    3. android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:548)
    4. android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:532)
    4 frames
  3. org.appcelerator.titanium
    TiUIFragment.<init>
    1. org.appcelerator.titanium.view.TiUIFragment.<init>(TiUIFragment.java:41)
    1 frame
  4. ti.map
    ViewProxy.createView
    1. ti.map.TiUIMapView.<init>(TiUIMapView.java:55)
    2. ti.map.ViewProxy.createView(ViewProxy.java:63)
    2 frames
  5. org.appcelerator.titanium
    TiViewProxy.handleMessage
    1. org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:465)
    2. org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:451)
    3. org.appcelerator.titanium.proxy.TiViewProxy.handleAdd(TiViewProxy.java:568)
    4. org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:220)
    4 frames
  6. Android Platform
    ActivityThread.main
    1. android.os.Handler.dispatchMessage(Handler.java:98)
    2. android.os.Looper.loop(Looper.java:136)
    3. android.app.ActivityThread.main(ActivityThread.java:5017)
    3 frames
  7. Java RT
    Method.invoke
    1. java.lang.reflect.Method.invokeNative(Native Method)
    2. java.lang.reflect.Method.invoke(Method.java:515)
    2 frames
  8. Android
    ZygoteInit.main
    1. com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
    2. com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
    2 frames
  9. Android Platform
    NativeStart.main
    1. dalvik.system.NativeStart.main(Native Method)
    1 frame