Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>You do not want to set multiple onClickListeners for each of the different Images you have. You would just need to keep track of the current image so that when you click the button it knows which is the next image.</p> <p>This code should give you and example of what I mean.</p> <pre><code>import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; public class Main extends Activity { private ImageView hImageViewSemafor; private Button hButton; private int currentImage = 0; private int numImages = 10; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); hImageViewSemafor = (ImageView)findViewById(R.id.idImageViewSemafor); hButton = (Button) findViewById(R.id.idBtnChangeImage); //Just set one Click listener for the image hButton.setOnClickListener(aButtonChangeImageListener); } View.OnClickListener aButtonChangeImageListener = new OnClickListener() { public void onClick(View v) { //Increase Counter to move to next Image currentImage++; currentImage = currentImage % numImages //Set the image depending on the counter. switch (currentImage) { case 0: hImageViewSemafor.setImageResource(R.drawable.r1); break; case 1: hImageViewSemafor.setImageResource(R.drawable.r2); break; case 2: hImageViewSemafor.setImageResource(R.drawable.r3); break; case 3: hImageViewSemafor.setImageResource(R.drawable.r4); break; case 4: hImageViewSemafor.setImageResource(R.drawable.r5); break; case 5: hImageViewSemafor.setImageResource(R.drawable.r6); break; case 6: hImageViewSemafor.setImageResource(R.drawable.r7); break; case 7: hImageViewSemafor.setImageResource(R.drawable.r8); break; case 8: hImageViewSemafor.setImageResource(R.drawable.r9); break; case 9: hImageViewSemafor.setImageResource(R.drawable.r10); break; default: hImageViewSemafor.setImageResource(R.drawable.r1); } } }; } </code></pre> <p>Hopefully this will work, but I have not tested it.</p> <h1>UPDATE</h1> <p>Removed the big switch block.</p> <pre><code>import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; public class Main extends Activity { private ImageView hImageViewSemafor; private Button hButton; private int currentImage = 0; int[] images = { R.drawable.r1, R.drawable.r2, R.drawable.r3, R.drawable.r4, R.drawable.r5, R.drawable.r6, R.drawable.r7, R.drawable.r8, R.drawable.r9, R.drawable.r10 }; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); hImageViewSemafor = (ImageView)findViewById(R.id.idImageViewSemafor); hButton = (Button) findViewById(R.id.idBtnChangeImage); //Just set one Click listener for the image hButton.setOnClickListener(aButtonChangeImageListener); } View.OnClickListener aButtonChangeImageListener = new OnClickListener() { public void onClick(View v) { //Increase Counter to move to next Image currentImage++; currentImage = currentImage % images.length; hImageViewSemafor.setImageResource(images[currentImage]); } }; } </code></pre> <h1>UPDATE 2</h1> <p>The problem is in</p> <pre><code>currentImage--; currentImage = currentImage % images.length; </code></pre> <p>as, when going the previous image from the first image, currentImage becomes less than 0. And it is not possible to MOD (%) a negative number. This will be causing your error. So by changing it to this.</p> <pre><code>currentImage--; currentImage = (currentImage + images.length) % images.length; </code></pre> <p>We have fixed the problem of it becoming less than 0 by adding the total amount of images to the currentImage number.</p> <p>This code below should be the fixed code.</p> <pre><code>package com.galerionsekiz; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; public class Main extends Activity { private ImageView hImageViewPic; private Button iButton, gButton; private int currentImage = 0; int[] images = { R.drawable.r1, R.drawable.r2, R.drawable.r3, R.drawable.r4, R.drawable.r5, R.drawable.r6, R.drawable.r7, R.drawable.r8, R.drawable.r9, R.drawable.r10 }; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); hImageViewPic = (ImageView)findViewById(R.id.idImageViewPic); iButton = (Button) findViewById(R.id.bIleri); gButton = (Button) findViewById(R.id.bGeri); //Just set one Click listener for the image iButton.setOnClickListener(iButtonChangeImageListener); gButton.setOnClickListener(gButtonChangeImageListener); } View.OnClickListener iButtonChangeImageListener = new OnClickListener() { public void onClick(View v) { //Increase Counter to move to next Image currentImage++; currentImage = currentImage % images.length; hImageViewPic.setImageResource(images[currentImage]); } }; View.OnClickListener gButtonChangeImageListener = new OnClickListener() { public void onClick(View v) { //Increase Counter to move to next Image currentImage--; currentImage = (currentImage + images.length) % images.length; hImageViewPic.setImageResource(images[currentImage]); } }; } </code></pre>
    singulars
    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. VO
      singulars
      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