2014-09-17 5 views
0

J'ai un projet basé sur this tutorial dans lequel l'utilisateur fait tourner une roue et une valeur d'un nombre int days change en fonction de la position actuelle de la roue, maintenant je veux faire une autre image ImageView circle afficher ou masquer selon à la valeur de ce nombre, mais il jette NullPointerExceptionmontrant et cachant ImageView

c'est mon événement onTouch et désolé pour mon mauvais anglais

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

mon logcat enter image description here

+0

votre logcat s'il vous plaît publier – Burak

+0

@Burak modifié la question – Fawzinov

+1

qu'est-ce que la ligne 194? –

Répondre

5

Vous devez initialiser la vue circle, très probablement avec la méthode findViewById()

3

Avez-vous défini cercle comme celui-ci;

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

essayer quelque chose comme ça avant la ligne 194 switch cas:

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

Voici votre code tout:

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

}

Questions connexes