Switch语句不会改变android的值

时间:2015-10-02 21:39:04

标签: android format switch-statement

我有一个imageview和一个按钮,onclick我想设置不同类型的显示器(全屏,方形和其他垂直格式),我有一个开关语句但它不起作用我不知道在哪里我做错了,请帮助我,也许这是一个简单的问题,但仍然无法在谷歌找到解决方案,

    private int format; 

    private void changeFormat(){
        switch (format) {
        case 0:
            format = 0;
            System.out.println("format is " + format);
            formatFullScreen();
            break;
        case 1:
            format = 1;
            System.out.println("format is " + format);
            formatSquare();
            break;

        case 2:
            format = 2;
            System.out.println("format is " + format);
            formatVertical();

            break;
        default:
            format = 0;
            System.out.println("format is " + format);
            formatFullScreen();
            break;
        }
    }
    button.setOnClickListener(new View.SetOnClickListener(){
        @Override
        public void onClick(View v) {
        changeFormat();
        // in logcat it prints the format = 0 ; and it doesn't change everytime i click.
    }

2 个答案:

答案 0 :(得分:1)

这是一个快速解决方案:

private int format = 0;

private void setFormat(int value){
  format = value;
}

private void doOperation(){
  switch(format){
    case 0: formatFullScreen(); break;
    case 1: formatSquare(); break;
    case 2: formatVertical(); break;
    default: formatFullScreen(); break;
  }
}

button.setOnClickListener(new View.SetOnClickListener(){
        @Override
        public void onClick(View v) {
        incrementFormat();
        doOperation();
   }
}

private void incrementFormat(){
  format++;
  if(format > 2){
    format = 0;
  }
}

希望这有助于你

答案 1 :(得分:0)

format开始设置为0 ...然后此代码运行:

case 0:
    format = 0;
    System.out.println("format is " + format);
    formatFullScreen();
    break;

format保持为0。

在每个case语句中,尝试将format设置为下一个值..