我有两个按钮和一个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;
}
}
答案 0 :(得分: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();
}
}
修改强>
使用a++
和a--
的onClick方法完成增量和减量
记得开始你的int a =-1
。但是,在您单击NextPicture
之前,默认图片将为空
它总是更好地动态变量,即。使用++
或--
增加而不是使用值初始化它。比如a=21
。不是首选。
答案 1 :(得分: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]);
}
}
答案 2 :(得分:0)
使用
onClick(next);
而不是
next.performClick();
并且还尝试将图像的ID保存在数组中,然后从中获取“a”值,而不是写入56 if语句。