2017-02-12 1 views
0

Je crée un nom d'application de fond d'écran Android, mais le problème est que lorsque je clique sur le bouton gauche et droite le papier peint suivant et précédent ne vient pas. Je l'ai essayé beaucoup mais j'ai échoué.Android Erreur de programmation

public class Wallpapers extends AppCompatActivity { 
    WallpaperManager managerr; 
    Button B; 
    Button b1; 
    Button b2; 
    ImageView m; 

    int a[]={R.drawable.w1,R.drawable.w2,R.drawable.w3}; 
    int aa; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_wallpapers); 
     click(); 
    } 
    public void click() 
    { 
     m = (ImageView) findViewById(R.id.imageView); 
     B=(Button)findViewById(R.id.button3); 
     b1=(Button)findViewById(R.id.button); 
     b2=(Button)findViewById(R.id.button2); 

     managerr = WallpaperManager.getInstance(getApplicationContext()); 

     m.setImageResource(R.drawable.w1); 
     b1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       if() 
       { 
        m.setImageResource(R.drawable.w2); 

       } 
       else if(m.getDrawable()==getResources().getDrawable(R.drawable.m2).getCurrent()) 
       { 
        m.setImageResource(R.drawable.w3); 
       } 

      } 
     }); 
    } 
} 

C'est le code.

C'est l'image de l'application:

enter image description here

Répondre

1

que vous avez défini onClickListener seulement pour b1.

changer votre code suit

int currentPosition = 0; 

public void click(){ 
    m = (ImageView) findViewById(R.id.imageView); 
    B= (Button) findViewById(R.id.button3); 
    left = (Button) findViewById(R.id.button); 
    right = (Button) findViewById(R.id.button2); 

    managerr = WallpaperManager.getInstance(getApplicationContext()); 

    m.setImageResource(R.drawable.m1); 

    left.setOnClickListener(new OnClickListener(){ 
     @Override 
     public void onClick(View view) { 
      if(currentPosition > 0){ 
       m.setImageResource(previuosDrawable); 
       currentPosition--; 
      } 
     } 
    } 

    right.setOnClickListener(new OnClickListener(){ 
     @Override 
     public void onClick(View view) { 
      if(currentPosition < pictures.length){ 
       m.setImageResource(nextDrawable); 
       currentPosition++; 
      } 
     } 
    } 
} 
+0

Je l'ai essayé mais ne fonctionne pas –

+0

J'ai édité mon exemple. Maintenant, vous avez seulement besoin d'une liste de drawables, pour définir précédent ou suivant drawable – anatoli

1

tout d'abord, si() n'a pas des conditions ne peut donc pas ajouter d'abord des œuvres if(m.getDrawable()==getResources().getDrawable(R.drawable.m2).getCurrent()) puis ajouter tous les autres si vous avez besoin et enfin l'autre, y compris m.setImageResource(R.drawable.w2);

Deuxièmement, vous avez besoin est de setOnClickListener aux deux Button objets parce que vous ne définissez l'auditeur b1 et non à b2

Pour quoi faire B?

Pourquoi avez-vous un tableau appelé a avec les drawables si vous n'y avez pas accès? Vous pouvez accéder aux drawables en utilisant a[index] et en augmentant ou en réduisant le nombre d'index de 0 à 3 ou de 3 à 0 lorsque vous cliquez sur b1 ou b2. Ce sera mieux ...