2014-09-17 2 views
0

У меня есть проект, основанный на this tutorial, в котором пользователь поворачивает колесо, а значение числа int days меняется в соответствии с текущим положением колеса, теперь я хочу сделать другое изображение ImageView circle показать или скрыть к значению этого числа, но он бросает NullPointerExceptionпоказ и скрытие ImageView

это мое onTouch события и извините за моего плохого английского

@Override 
public boolean onTouch(View v, MotionEvent event) { 

    switch (event.getAction()) { 

     case MotionEvent.ACTION_DOWN: 
      // reset the touched quadrants 
      for (int i = 0; i < quadrantTouched.length; i++) { 
       quadrantTouched[i] = false; 
      } 
      allowRotating = false; 
      startAngle = getAngle(event.getX(), event.getY()); 
      break; 

     case MotionEvent.ACTION_MOVE: 
      double currentAngle = getAngle(event.getX(), event.getY()); 
      rotateDialer((float) (startAngle - currentAngle)); 
      startAngle = currentAngle; 
      days = ((int) currentAngle/12) + 1; 
      String test = Integer.toString(days); 
      tvnumber.setText(test); 

      switch (days) { 
       case 1: 
        circle.setVisibility(View.INVISIBLE); 
        break; 
       case 3: 
        circle.setVisibility(View.VISIBLE); 
        break; 
      } 
      break; 

     case MotionEvent.ACTION_UP: 
      allowRotating = false; 
      break; 
    } 
} 

моего LogCat enter image description here

+0

разместим ваш LogCat пожалуйста – Burak

+0

@Burak отредактирован вопрос – Fawzinov

+1

что такое строка 194? –

ответ

5

Вы должны инициализировать circle вид, скорее всего, с помощью метода findViewById()

3

вы определяли круг, как это;

ImageView circle = (ImageView) findViewById(R.id.xxx); 
4

попробовать некоторые вещи, как это раньше линия 194 переключателя случае:

ImageView circle = (ImageView) view.findViewById(R.id.your_iamgeview); 

Вот весь код:

@Override 
public boolean onTouch(View v, MotionEvent event) { 
switch (event.getAction()) { 

    case MotionEvent.ACTION_DOWN: 
     // reset the touched quadrants 
     for (int i = 0; i < quadrantTouched.length; i++) { 
      quadrantTouched[i] = false; 
     } 
     allowRotating = false; 
     startAngle = getAngle(event.getX(), event.getY()); 
     break; 

    case MotionEvent.ACTION_MOVE: 
     double currentAngle = getAngle(event.getX(), event.getY()); 
     rotateDialer((float) (startAngle - currentAngle)); 
     startAngle = currentAngle; 
     days = ((int) currentAngle/12) + 1; 
     String test = Integer.toString(days); 
     tvnumber.setText(test); 
     ImageView circle = (ImageView) v.findViewById(R.id.your_iamgeview); //<-- Add this 
     switch (days) { 
      case 1: 
       circle.setVisibility(View.INVISIBLE); 
       break; 
      case 3: 
       circle.setVisibility(View.VISIBLE); 
       break; 
     } 
     break; 

    case MotionEvent.ACTION_UP: 
     allowRotating = false; 
     break; 
} 

}

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