0

我有两个按钮和一个 ImageView。当我单击下一步按钮时,它会从可绘制文件夹转到下一个图像。但是上一个按钮不起作用。我不知道为什么,我认为我的逻辑是正确的。这是我的代码:

public class Photo_gallery extends Activity implements OnClickListener{

    Button next,previous;
    ImageView slika;

    int a = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.photo_gallery);

        InicijalizujVarijable();
    }

    private void InicijalizujVarijable() {
        next = (Button) findViewById(R.id.bNext);
        previous = (Button) findViewById(R.id.bPrevious);
        slika = (ImageView) findViewById(R.id.imageView1);


        next.setOnClickListener(this);
        previous.setOnClickListener(this);

    }

    public void onClick(View v) {
        switch (v.getId()){

        case R.id.bNext:
            if (a == 0)
            {
            slika.setImageResource(R.drawable.p2);
            a = 1;
            }
            else if (a == 1)
            {
            slika.setImageResource(R.drawable.p3);
            a = 2;
            }
            else if (a == 2)
            {
            slika.setImageResource(R.drawable.p4);
            a = 3;
.
.
.
.
            }
            else if (a == 56)
            {
                startActivity(new Intent("com.example.apps.MENU"));
                finish();
            }
            break;
        case R.id.bPrevious:
            a--;
            next.performClick();
            break;

        }

    }
4

3 回答 3

2

你为什么不把它变成一个函数呢

public void onClick(View v) {
    switch (v.getId()){

    case R.id.bNext:
///function calling  
       a++;
       setImage(a);            
        break;

    case R.id.bPrevious:
        if(a>0)
        {
            a--;
            setImage(a);  
            break;
        }

    }

}
private void setImage(int a)
    {   
        if (a == 0)
        {
        slika.setImageResource(R.drawable.p2);
        }
        else if (a == 1)
        {
        slika.setImageResource(R.drawable.p3);
        }
        else if (a == 2)
        {
        slika.setImageResource(R.drawable.p4);
   .
   .
   .
   .
        }
        else if (a == 56)
        {
            startActivity(new Intent("com.example.apps.MENU"));
            finish();
        }
 }

编辑 增量和减量由 onClick 方法完成a++a-- 记住启动你的int a =-1. 但是默认图片将为空,直到您单击NextPicture
它总是对您更好的动态变量,即。增加++--而不是用一个值来初始化它。喜欢a=21。不是首选。

于 2013-06-21T13:49:21.087 回答
0

利用

onClick(next); 

代替

next.performClick();

并且还尝试将图像的 id 保存在一个数组中,然后从中获取“a”值,而不是写 56 if 语句。

于 2013-06-21T14:07:58.643 回答
0

尝试这个 :

public class MainActivity extends Activity  implements OnClickListener{

    private int[] IMAGE_IDS = { R.drawable.image1, R.drawable.image2,
        R.drawable.image3};

    int imglength=IMAGE_IDS.length;

    int img_position;

    ImageView slidingimage;


 @Override
public void onClick(View v) {
    // TODO Auto-generated method stub  


  switch (v.getId()) {

         case R.id.iv_left_arrow:

              img_position--;  

              break;                    

         case R.id.iv_right_arrow:

             img_position++;

             break;

           }

        if(img_position < 0) img_position = imglength-1;    

        if(img_position >= imglength) img_position = imglength -1;

        slidingimage.setImageResource(IMAGE_IDS[img_position]);


   }

           }
于 2013-06-21T13:52:41.807 回答