按顺序单击按钮时android图像发生更改

按顺序单击按钮时android图像发生更改,android,Android,我想做一个简单的应用程序与图像,并在它下面的两个按钮。“下一步”按钮和“上一步”按钮。当他们单击“下一步”时,会将图片更改为下一张图片。当他们点击“上一张”时,它会将图片更改为上一张图片。我的活动名称是“imagescreen”,按钮ID是“previous”和“next”。我的imageview ID是“imageview” 我好像没办法让这件事成功。我已经试过了,但是我的应用程序崩溃了。对不起,我是新手,正在尽我最大的努力 我还希望在第一幅图像(即resource r1.png)上显示“pr

我想做一个简单的应用程序与图像,并在它下面的两个按钮。“下一步”按钮和“上一步”按钮。当他们单击“下一步”时,会将图片更改为下一张图片。当他们点击“上一张”时,它会将图片更改为上一张图片。我的活动名称是“imagescreen”,按钮ID是“previous”和“next”。我的imageview ID是“imageview”

我好像没办法让这件事成功。我已经试过了,但是我的应用程序崩溃了。对不起,我是新手,正在尽我最大的努力

我还希望在第一幅图像(即resource r1.png)上显示“previous”(上一页)按钮时,该按钮变灰/禁用,但不知道如何执行该操作

public class imagescreen extends Activity implements View.OnClickListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_imagescreen);

    previous = (Button) findViewById(R.id.previous);
    previous.setOnClickListener(this);

    next = (Button) findViewById(R.id.next);
    next.setOnClickListener(this);

}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.swipepage, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

@Override
public void onClick(View view) {

    switch (view.getId()) {
        case R.id.next:
            if (a == 0) {
                image.setImageResource(R.drawable.r2);
                a = 1;
            } else if (a == 1) {
                image.setImageResource(R.drawable.r3);
                a = 2;
            } else if (a == 2) {
                image.setImageResource(R.drawable.r1);
                a = 3;
        case R.id.previous:
            a--;
            View previous;
            previous.performClick();
            break;
    }
}

不要这样做。使用Viewpager更改图像,它支持滑动到下一个和上一个

您还可以为按钮编写代码


请参阅本教程,这将很有帮助

我认为这是NPE的崩溃,因为我看不到您在哪里声明了“a”是什么,您也没有声明“image”imageView

你可以这样做:

     public class ImageScreen extends Activity implements View.OnClickListener {

Button previous, next;
ImageView image;
int a;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_imagescreen);

        previous = (Button) findViewById(R.id.previous);
        previous.setOnClickListener(this);

        next = (Button) findViewById(R.id.next);
        next.setOnClickListener(this);

        image = (ImageView) findViewById(R.id.yourImageView); //Change accordingly
        image.setImageResource(R.drawable.r1); //Set your first image to be displayed
        a = 1; //declare a variable and set it to 1

    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.swipepage, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onClick(View view) {

        switch (view.getId()) {
            case R.id.next:
                if (a == 1) {
                    image.setImageResource(R.drawable.r2);
                    a = 2;
                } else if (a == 2) {
                    image.setImageResource(R.drawable.r3);
                    a = 3;
                } else if (a == 3) {
                    Toast.makeText(ImageScreen.this, "No more photos to show", Toast.LENGTH_SHORT).show() ;
break;

            case R.id.previous:
                if (a == 1) {
                    Toast.makeText(ImageScreen.this, "No more photos to show", Toast.LENGTH_SHORT).show() ;
                } else if (a == 2) {
                    image.setImageResource(R.drawable.r1);
                    a = 1;
                } else if (a == 3) {
                     image.setImageResource(R.drawable.r2);
                    a = 2;
                break;
        }
    }

我尝试了上一个用户发布的内容,但在代码的这一部分,“a”和“图像”部分是红色的,表示无法解析符号

    @Override
public void onClick(View view) {

    switch (view.getId()) {
        case R.id.next:
            if (a == 1) {
                image.setImageResource(R.drawable.r2);
                a = 2;
            } else if (a == 2) {
                image.setImageResource(R.drawable.r3);
                a = 3;
            } else if (a == 3) {
                Toast.makeText(swipepage.this, "No more photos to show", Toast.LENGTH_SHORT).show();
            }
                case R.id.previous:
                    if (a == 1) {
                        Toast.makeText(swipepage.this, "No more photos to show", Toast.LENGTH_SHORT).show() ;
                    } else if (a == 2) {
                        image.setImageResource(R.drawable.r1);
                        a = 1;
                    } else if (a == 3) {
                        image.setImageResource(R.drawable.r2);
                        a = 2;
                        break;
                    }
            }

}

显示您的日志,您正在崩溃。在R.id.next case.hi gilonm之后添加“break”语句,请参阅我在上面发布的内容。hi!检查我编辑的答案。您将看到我在onCreate方法上方声明了您的按钮、ImageView和int a,在您的switch语句中,我在第一个case之后添加了一个“break”。现在试试看。。。