Note that there are some explanatory texts on larger screens.

plurals
  1. POApp crash on 4th screen rotation (second time in landscape) with differing portrait and landscape layouts
    primarykey
    data
    text
    <p>I have an app that uses two drastically different layouts for portrait and landscape. The portrait mode is the main use case, where the user can control the application, and consists of a ListView with a few other views elements around it. The landscape layout is just an informational view of whatever was last selected in the portrait view, and consists of a ViewPager filled with WebViews, and some of the same views as in the protrait mode, but not all of them . When I run the app in debugging mode from Eclipse, and I rotate from portrait to landscape, back to portrait, and then back to landscape, it crashes on the last rotation to landscape every time (Stack printout in logcat below). If I run the app on my phone without debugging mode, it does not crash. The stack trace does not tell me much of why the crash happens. I try to make sure the views are not null where-ever they are used in the code.</p> <p>My problem looks similar to <a href="http://groups.google.com/group/android-developers/browse_thread/thread/c9159dc972a15870#" rel="nofollow">this</a>, but there's no further detail on a solution in that conversation either. Can anyone give me a clue on what could be going wrong? My guesses: The app runs out of memory (some kind of memory leak occurs with each rotation, and that causes the crash after 4 rotations). </p> <p>Or should I refactor my app and somehow make the two drastically different layouts two different activities? The two layouts share just enough functionality to make me want to use the same activity.</p> <p><strong>Logcat stack trace:</strong></p> <pre><code>10-16 21:53:58.690: ERROR/AndroidRuntime(4494): FATAL EXCEPTION: main 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fonkmobile.player22tracks/com.fonkmobile.player22tracks.PlaylistActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class &lt;unknown&gt; 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3815) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.app.ActivityThread.access$2400(ActivityThread.java:125) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2037) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.os.Handler.dispatchMessage(Handler.java:99) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.os.Looper.loop(Looper.java:123) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.app.ActivityThread.main(ActivityThread.java:4627) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at java.lang.reflect.Method.invokeNative(Native Method) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at java.lang.reflect.Method.invoke(Method.java:521) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at dalvik.system.NativeStart.main(Native Method) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class &lt;unknown&gt; 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.view.LayoutInflater.createView(LayoutInflater.java:513) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.view.LayoutInflater.parseInclude(LayoutInflater.java:679) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.view.LayoutInflater.rInflate(LayoutInflater.java:614) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.view.LayoutInflater.rInflate(LayoutInflater.java:621) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.view.LayoutInflater.inflate(LayoutInflater.java:407) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.app.Activity.setContentView(Activity.java:1647) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at com.fonkmobile.player22tracks.PlaylistActivity.onCreate(PlaylistActivity.java:170) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): ... 12 more 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): Caused by: java.lang.reflect.InvocationTargetException 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.widget.LinearLayout.&lt;init&gt;(LinearLayout.java:115) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at java.lang.reflect.Constructor.constructNative(Native Method) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at java.lang.reflect.Constructor.newInstance(Constructor.java:446) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.view.LayoutInflater.createView(LayoutInflater.java:500) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): ... 25 more 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): Caused by: android.content.res.Resources$NotFoundException: File res/drawable-mdpi/playlist_expanded_bg.png from drawable resource ID #0x7f02003c 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.content.res.Resources.loadDrawable(Resources.java:1714) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.content.res.TypedArray.getDrawable(TypedArray.java:601) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.view.View.&lt;init&gt;(View.java:1885) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.view.View.&lt;init&gt;(View.java:1834) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.view.ViewGroup.&lt;init&gt;(ViewGroup.java:285) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): ... 29 more 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): Caused by: java.lang.NullPointerException 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.graphics.Bitmap.createBitmap(Bitmap.java:439) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:342) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:504) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:478) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:325) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:697) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): at android.content.res.Resources.loadDrawable(Resources.java:1709) 10-16 21:53:58.690: ERROR/AndroidRuntime(4494): ... 33 more </code></pre> <p><strong>My 2 layout files:</strong></p> <p><strong>res/layout-land/playlist.xml</strong></p> <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;RelativeLayout android:id="@+id/playlistLayout" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@android:color/black"&gt; &lt;android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/webviewpager"/&gt; &lt;SlidingDrawer android:layout_alignParentBottom="true" android:id="@+id/slidingDrawerAudioBar" android:layout_width="fill_parent" android:layout_height="70dip" android:layout_marginBottom="117dip" android:handle="@+id/audiohandle" android:content="@+id/audiocontent"&gt; &lt;ImageView android:layout_width="0dip" android:layout_height="0dip" android:id="@id/audiohandle" /&gt; &lt;include android:id="@+id/audiocontent" layout="@layout/volumebar" /&gt; &lt;/SlidingDrawer&gt; &lt;SlidingDrawer android:layout_alignParentBottom="true" android:id="@+id/slidingDrawerScrubbingBar" android:layout_width="fill_parent" android:layout_height="125dip" android:handle="@+id/scrubbinghandle" android:layout_marginBottom="117dip" android:content="@+id/scrubbingcontent"&gt; &lt;ImageView android:layout_width="0dip" android:layout_height="0dip" android:id="@id/scrubbinghandle" /&gt; &lt;include android:id="@+id/scrubbingcontent" layout="@layout/seekbar" /&gt; &lt;/SlidingDrawer&gt; &lt;SlidingDrawer android:layout_alignParentBottom="true" android:id="@+id/slidingDrawerNowPlaying" android:layout_width="fill_parent" android:layout_height="50dip" android:handle="@+id/nowplayinghandle" android:content="@+id/nowplayingcontent"&gt; &lt;ImageView android:layout_width="0dip" android:layout_height="0dip" android:id="@id/nowplayinghandle" /&gt; &lt;include android:id="@+id/nowplayingcontent" layout="@layout/nowplaying"&gt;&lt;/include&gt; &lt;/SlidingDrawer&gt; &lt;SlidingDrawer android:layout_alignParentBottom="true" android:id="@+id/slidingDrawerPlayBar" android:layout_width="fill_parent" android:layout_height="125dip" android:handle="@+id/playhandle" android:content="@+id/playcontent"&gt; &lt;ImageView android:layout_width="0dip" android:layout_height="0dip" android:id="@id/playhandle" /&gt; &lt;include android:id="@+id/playcontent" layout="@layout/playbar" /&gt; &lt;/SlidingDrawer&gt; &lt;/RelativeLayout&gt; </code></pre> <p><strong>res/layout-port/playlist.xml</strong></p> <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;RelativeLayout android:id="@+id/playlistLayout" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@android:color/black"&gt; &lt;android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/webviewpager" android:visibility = "gone"/&gt; &lt;include android:id="@+id/djbar" layout="@layout/djbar" /&gt; &lt;ListView android:id="@+id/playlistview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:choiceMode="singleChoice" android:longClickable="false" android:cacheColorHint="@android:color/transparent" android:listSelector="@android:color/transparent" android:drawSelectorOnTop="false" android:layout_below="@id/djbar" &gt; &lt;/ListView&gt; &lt;ProgressBar android:id="@+id/emptyplaylist" style="?android:attr/progressBarStyleLarge" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_centerInParent="true"&gt; &lt;/ProgressBar&gt; &lt;com.fonkmobile.player22tracks.widgets.MultiDirectionSlidingDrawer xmlns:my="http://schemas.android.com/apk/res/com.fonkmobile.player22tracks" android:id="@+id/genredrawer" my:allowSingleTap="true" my:animateOnClick = "true" android:layout_width="wrap_content" android:layout_height="wrap_content" my:handle="@+id/genrehandle" my:content="@+id/genrecontent" my:direction="leftToRight"&gt; &lt;include android:id="@id/genrecontent" layout="@layout/genrelist" /&gt; &lt;ImageView android:id="@id/genrehandle" android:layout_width="40dip" android:layout_height="80dip" /&gt; &lt;/com.fonkmobile.player22tracks.widgets.MultiDirectionSlidingDrawer&gt; &lt;SlidingDrawer android:layout_alignParentBottom="true" android:id="@+id/slidingDrawerAudioBar" android:layout_width="fill_parent" android:layout_height="70dip" android:layout_marginBottom="117dip" android:handle="@+id/audiohandle" android:content="@+id/audiocontent"&gt; &lt;ImageView android:layout_width="0dip" android:layout_height="0dip" android:id="@id/audiohandle" /&gt; &lt;include android:id="@+id/audiocontent" layout="@layout/volumebar" /&gt; &lt;/SlidingDrawer&gt; &lt;SlidingDrawer android:layout_alignParentBottom="true" android:id="@+id/slidingDrawerScrubbingBar" android:layout_width="fill_parent" android:layout_height="125dip" android:handle="@+id/scrubbinghandle" android:layout_marginBottom="117dip" android:content="@+id/scrubbingcontent"&gt; &lt;ImageView android:layout_width="0dip" android:layout_height="0dip" android:id="@id/scrubbinghandle" /&gt; &lt;include android:id="@+id/scrubbingcontent" layout="@layout/seekbar" /&gt; &lt;/SlidingDrawer&gt; &lt;SlidingDrawer android:layout_alignParentBottom="true" android:id="@+id/slidingDrawerNowPlaying" android:layout_width="fill_parent" android:layout_height="50dip" android:handle="@+id/nowplayinghandle" android:content="@+id/nowplayingcontent"&gt; &lt;ImageView android:layout_width="0dip" android:layout_height="0dip" android:id="@id/nowplayinghandle" /&gt; &lt;include android:id="@+id/nowplayingcontent" layout="@layout/nowplaying"&gt;&lt;/include&gt; &lt;/SlidingDrawer&gt; &lt;SlidingDrawer android:layout_alignParentBottom="true" android:id="@+id/slidingDrawerPlayBar" android:layout_width="fill_parent" android:layout_height="125dip" android:handle="@+id/playhandle" android:content="@+id/playcontent"&gt; &lt;ImageView android:layout_width="0dip" android:layout_height="0dip" android:id="@id/playhandle" /&gt; &lt;include android:id="@+id/playcontent" layout="@layout/playbar" /&gt; &lt;/SlidingDrawer&gt; &lt;ImageView android:src="@drawable/dragbar_left" android:layout_centerVertical="true" android:layout_alignParentLeft="true" android:background="@null" android:id="@+id/imageDrawerArrow" android:layout_width="26dip" android:layout_height="100dip" android:adjustViewBounds="true" android:layout_margin="0dip"&gt;&lt;/ImageView&gt; &lt;/RelativeLayout&gt; </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload