Below is my layout for the row template in a SimpleCursorAdapter.
The ImageView with id next_arrow disappears permanently on orientation change (going back to original orientation doesn’t make it re-appear). If I replace @drawable/arrow with @drawable/icon (copy of the standard sym_def_app_icon) it works fine. All the drawables in question are simple references to PNG files.
I thought it might be somehow related to the icons being of different dimensions, but I resized @drawable/icon to be the exact same dimensions as the arrow and it still worked fine while the arrow didn’t.
Update
Okay it gets even weirder. I renamed the arrow.png to something_not_called_arrow.png and… it works. What is going on?
This isn’t the first time I’ve seen this happen. Earlier today I had another drawable PNG that showed fine in the Eclipse Graphical Layout view, but refused to show up at all in the Emulator or on a device until I renamed the file. I tried cleaning and refreshing the project, and restarting Eclipse.
Another Update
Just had this happen again in a different situation. In Activity onCreate() I call findViewById() on a few resources to configure them, everything works fine on first load. When onCreate() is called due to an orientation change, findViewById() returns null for all these resources. This is maddening, and the answers that involve android:configChanges="keyboardHidden|orientation" aren’t real solutions at all, they are just masking the problem.
In this case I “fixed” it by renaming the layout xml for the activity from share.xml to share_activity_layout.xml. I’m starting to think there is some kind of bug in the R file generation and resource ID management in general.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="90dp"
android:background="@drawable/product_list_divider"
android:paddingTop="10dp">
<ImageView android:src="@drawable/ninja_20_65"
android:id="@+id/category_icon"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_marginTop="3dp"/>
<LinearLayout android:orientation="vertical"
android:layout_weight="5"
android:layout_width="0dp"
android:layout_height="wrap_content">
<TextView android:id="@+id/category_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Name"
style="@style/CategoryHeading" android:layout_marginTop="5dp"/>
<TextView android:id="@+id/category_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Description"
style="@style/CategoryDescription"/>
</LinearLayout>
<ImageView android:src="@drawable/arrow"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_marginRight="10dp"
android:layout_height="wrap_content" android:layout_marginTop="20dp" android:id="@+id/next_arrow"/>
</LinearLayout>
I’m using Android 2.1.
I renamed the
arrow.pngtosomething_not_called_arrow.pngand it works.There was a subsequent similar issue which I “fixed” by renaming the layout xml for the activity from share.xml to share_activity_layout.xml.
I think there is a bug in the R file generation and resource ID management in general.