2014-01-04 2 views
0

В настоящее время я пытаюсь сделать заказ. Пользователь должен был нажать кнопки в указанном порядке. Как бы то ни было, у меня проблема с оператором else. Это мой код.Проблемы с инструкцией else

private OnClickListener click2 = new OnClickListener() { 
     List<Integer> mClickedButtonIds = new ArrayList<Integer>(); 

     @Override 
     public void onClick(View v) { 

     mClickedButtonIds.add(v.getId());  
     if (mClickedButtonIds.size() > 4) 
     { 
      mClickedButtonIds.remove(0);    
      int[] mDesiredOrder = new int[] { R.id.imageButton1, R.id.imageButton2, R.id.imageButton3, R.id.imageButton4 }; 

      if (mClickedButtonIds.get(0) == mDesiredOrder[0] 
       && mClickedButtonIds.get(1) == mDesiredOrder[1] 
       && mClickedButtonIds.get(2) == mDesiredOrder[2] 
       && mClickedButtonIds.get(3) == mDesiredOrder[3] 
       ) 
      { 
       tv1.setText("Correct"); 

      } 

      else 
      { 
       tv1.setText("Wrong"); 
      } 

     }  
    } 
    }; 

Если я играю в игру в первый раз, else заявление работа отлично. Но если я снова играю в игру, не закрывая приложение, заявление else начинает иметь проблему. Каждая кнопка, которую я нажимаю, выдает сообщение else, которое делает мой tv1, чтобы установить текст как Неверный. Но заявление if все еще работает отлично. Означает, что, хотя он сохраняет установленный текст как Неверный, но если я нажму окончательную кнопку в правильном порядке, она установит текст как Исправить. Есть ли решение для этого?

+0

'частное OnClickListener click2 = новый OnClickListener() { Список mClickedButtonIds = новый ArrayList ()' сделать это в onResume(), а не OnCreate(). – Simon

ответ

2

Возможно, вы не создали новую OnClickListener каждую игру, поэтому ArrayList не был очищен.

+0

Есть ли способ очистить 'arraylist'? – user3153613

+0

См. ['ArrayList.clear'] (http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#clear()). – user1537366

+0

ладно, спасибо, после очистки «arraylist» он стал хорошим. Однако у меня все еще есть проблемы. Для этой игры нужно только нажать 4 раза, однако мне нужно щелкнуть по ней 5 раз, чтобы она работала, если я играю в игру во второй раз после очистки «arraylist». Причина, если я не очистил «arraylist», в первый раз, мне нужно нажать 5 timse, но 2-й раз, мне нужно всего лишь щелкнуть 4 раза. Есть ли способ решить это. – user3153613

0

Попробуйте Else Если для второго блока, а не просто "Else"

+0

, но если я использую 'else if', то для чего это условие? – user3153613

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