سؤال

I have serious issue here. I am developing an app of wallpaper in which I have images in drawable. Images change with 2 buttons (next & back). 3rd button is used to set wallpaper. When I change the image with next button then image changes but 3rd button does not work to set wallpaper that image. This continues till the last image and 3rd button does not work. If I used the back button to revisit the image then 3rd button starts working. Then it works properly and I can set wallpaper the images which I want. Kindly help me to sort out the issue.

 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.bnext);
   gButton = (Button) findViewById(R.id.bprev);
   //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; 
     hImageViewPic.setImageResource(images[currentImage]); 

     // Here using 3rd button

    Button bSetWallpaper=(Button) findViewById (R.id.bSet);
     imageView imagePreview=(imageView) findViewById(R.id.idImageViewPic); 
     imagePreview.setOnClickListener (images [currentImage]); 
     bSetWallper.setOnClickListener (new Button.onClickListener (){ 
  @Override public void onClick (View arg0){ 
      WallpaperManager myWallpaperManager = WallpaperManager.getInstance (getApplicationContext ()); 
      try { 
          myWallpaperManager.setResource (images [currentImage]);
         } catch (IOException e) {
       e.printStackTrace (); 
     }
     }
   }); 
 } 
 }; }   
هل كانت مفيدة؟

المحلول

You have Implemented the 3:rd button in the

View.OnClickListener gButtonChangeImageListener = new OnClickListener() { 
      public void onClick(View v) { 

So if you don't click that button it wont create the funtionallity.

EDIT

Replace this (your code):

View.OnClickListener gButtonChangeImageListener = new OnClickListener() { 
  public void onClick(View v) { 
//Increase Counter to move to next Image
 currentImage--; 
 currentImage = currentImage % images.length; 
 hImageViewPic.setImageResource(images[currentImage]); 

 // Here using 3rd button

Button bSetWallpaper=(Button) findViewById (R.id.bSet);
 imageView imagePreview=(imageView) findViewById(R.id.idImageViewPic); 
 imagePreview.setOnClickListener (images [currentImage]); 
 bSetWallper.setOnClickListener (new Button.onClickListener (){ 
@Override public void onClick (View arg0){ 
  WallpaperManager myWallpaperManager = WallpaperManager.getInstance   (getApplicationContext ()); 
  try { 
      myWallpaperManager.setResource (images [currentImage]);
     } catch (IOException e) {
   e.printStackTrace (); 
 }
 }
}); 
} 
}; }

With this code:

View.OnClickListener gButtonChangeImageListener = new OnClickListener() { 
  public void onClick(View v) { 
//Increase Counter to move to next Image
 currentImage--; 
 currentImage = currentImage % images.length; 
 hImageViewPic.setImageResource(images[currentImage]);     
} 
};



 // Here using 3rd button

Button bSetWallpaper=(Button) findViewById (R.id.bSet);
 imageView imagePreview=(imageView) findViewById(R.id.idImageViewPic); 
 imagePreview.setOnClickListener (images [currentImage]); 
 bSetWallper.setOnClickListener (new Button.onClickListener (){ 
@Override public void onClick (View arg0){ 
  WallpaperManager myWallpaperManager = WallpaperManager.getInstance   (getApplicationContext ()); 
  try { 
      myWallpaperManager.setResource (images [currentImage]);
     } catch (IOException e) {
   e.printStackTrace (); 
 }
 }
});
 }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top