I have a simple slideshow that image changes by clicking. When I rotate device, oncreate function resets slideshow and it start from image0. How to get current image?
It's my cod:
private int currentImage = 0;
private int numImages = 5;
int[] imageList = { R.drawable.pic1, R.drawable.pic2, R.drawable.pic3, R.drawable.pic4, R.drawable.pic5};
@Override
protected void onCreate(Bundle savedInstanceState) {
currentImage = savedInstanceState.getInt("currentImage");
savedInstanceState.getBundle()
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ImageView image = (ImageView) findViewById(R.id.imageView);
image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
currentImage++;
currentImage = currentImage % numImages;
image.setImageResource(imageList[currentImage]);
}
});
}
Your solution
private int currentImage = 0;
private int numImages = 5;
int[] imageList = { R.drawable.pic1, R.drawable.pic2, R.drawable.pic3, R.drawable.pic4, R.drawable.pic5};
ImageView image;
private static final String IMAGE_COUNTER_KEY = "image_counter_key";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image = (ImageView) findViewById(R.id.imageView);
if (savedInstanceState != null) {
currentImage = savedInstanceState.getInt(IMAGE_COUNTER_KEY);
setCurrentImage(currentImage);
}
image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
currentImage++;
setCurrentImage(currentImage);
}
});
}
//In your activity override the onSavedInstanceState()
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(IMAGE_COUNTER_KEY, currentImage);
}
}
//This is a helper method for setting the image based on your code
private void setCurrentImage(int imageNumber) {
currentImage = currentImage % numImages;
image.setImageResource(imageList[currentImage]);
}