2015-10-02 4 views
-1

У меня есть изображение и кнопка onclick Я хочу установить различные типы отображения (полный экран, квадрат и другой вертикальный формат), у меня есть оператор switch, но он не " т работы я не знаю, где я делаю неправильно, пожалуйста, помогите мне, может быть, это простой вопрос, но до сих пор не могу найти решения в гугле,Оператор switch не меняет значение android

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. 
    } 
+1

переключения на формат и после выбора если вы его установили. это бессмысленно. если вы хотите, чтобы «изменить» значение сделать: частного аннулируются changeFormat (целое значение) {формата = значение;} , если вы хотите сделать что-н в зависимости от значения формата делать: частных недействительный doActionByFormat() { переключателя (формат): case 0: // do case ... default: ... } Его всегда 0, потому что в начале он не имеет значения. то при нажатии кнопки changeformat вызывается. это переключается на значение по умолчанию и устанавливает значение 0. – XxGoliathusxX

+0

Почему ваш код включает 'format', а также задает значение' format'? Что вы хотели бы сделать с этой переменной и с вызовом методов формата? – Jerry101

+0

@ Jerry101, я хочу переключить формат от 0 до 2, когда формат 0, я хочу вызвать formatfullscreen(), когда формат равен 1, я хочу вызвать другой метод и так ... –

ответ

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; 
    } 
} 

Надеется, что это помогает вам

+0

Большое вам спасибо, он работает, как я хочу. благодаря ! –

0

format начинается значение 0 ... а затем этот код пробеги:

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

format и остается на 0.

В каждом case заявления, попытайтесь установить format к следующему значению ..

+0

Я попытался, но он все еще остается в формате = 0; –

+0

Да, если целью является цикл между форматами, для этого нужен код. Совет. Один шаг через этот метод в отладчике Android Studio, чтобы узнать, как он работает против ожидаемой операции. – Jerry101

Смежные вопросы