in order to set ImageView dynamic i take an ImageView[] array. If i try to work on a ImageView from my array the activity crashes. Where is my mistake?
activity_main.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" >
<ImageView
android:id="@+id/iv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitStart" />
<ImageView
android:id="@+id/iv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitStart" />
<ImageView
android:id="@+id/iv3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitStart" />
</TableRow>
</RelativeLayout>
MainActivity.java:
package com.example.test;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;
public class MainActivity extends Activity {
private ImageView iv1, iv2, iv3;
private ImageView[] IMGS = { iv1, iv3, iv3 };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv1 = (ImageView) findViewById(R.id.iv1);
iv2 = (ImageView) findViewById(R.id.iv2);
iv3 = (ImageView) findViewById(R.id.iv3);
setImages();
}
private void setImages() {
// A) this works
iv1.setImageResource(R.drawable.ic_launcher);
iv2.setImageResource(R.drawable.ic_launcher);
iv3.setImageResource(R.drawable.ic_launcher);
// B) at the beginning i need to set all images in a row
for (ImageView img : IMGS) {
img.setImageResource(R.drawable.ic_launcher);
}
// C) later on i need to set an particular image
IMGS[1].setImageResource(R.drawable.ic_launcher);
}
}
Look at setImages(). A works, B and C crashes my activity. Where is my mistake?
TIA Tobias
Your ImageView[] IMGS = { iv1, iv2, iv3 };
just contains 3 nulls elements at the moment that you are looping
try to add values in your IMGS by doing
IMGS[0] = iv1;
IMGS[1] = iv2;
IMGS[2] = iv3;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv1 = (ImageView) findViewById(R.id.iv1);
iv2 = (ImageView) findViewById(R.id.iv2);
iv3 = (ImageView) findViewById(R.id.iv3);
IMGS[0] = iv1;
IMGS[1] = iv2;
IMGS[2] = iv3;
setImages();
}
You never assign iv1, iv2 and iv3 to the array
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With