2013-05-02 8 views
1

J'ai un TextView qui avait l'habitude de montrer sur l'écran, et a fait ce que je voulais. Cependant, j'ai rationalisé un code plus tard qui le repositionne avec une touche à son parent FrameLayout. Maintenant, le TextView (nommé angleView) cesse de s'afficher à l'écran, mais lorsque j'imprime ses coordonnées, cela fonctionne toujours de la même manière. Quelqu'un peut-il voir ce que je fais mal?Android - TextView ne pas afficher

Voici le code de ma onCreate() méthode:

angleView = new TextView(getApplicationContext()); 
angleView.setTextColor(Color.RED); 
angleView.setText("0"); 
angleView.setLayoutParams(new FrameLayout.LayoutParams(SCREEN_WIDTH/20, SCREEN_HEIGHT/20)); 

et le code de onTouchListener du FrameLayout:

preview.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      float y = (centerPoint.getY() - event.getY() + STATUS_BAR_HEIGHT); 
      float x = (centerPoint.getX() - event.getX()); 
      double angle = Math.atan(y/x); 
      setAngleFieldData(event, angle, y, x); 
      setFingerFollower(event, angle); 
      setYMeasure(event, y); 
      setXMeasure(event, x); 
      setTextPositions(event, angle, y, x); 
      Log.i("angleX", String.valueOf(angleView.getX())); 
      Log.i("angleY", String.valueOf(angleView.getY())); 
      return true; 
     } 

     private void setAngleFieldData(MotionEvent event, double angle, float y, float x){ 
      angleView.setText(String.valueOf(angle)); 
      angleView.setX(event.getX()); 
      angleView.setY(event.getY()); 
      if(isRadians) { 
       if(x < 0 && y >= 0){ 
        angleView.setText(String.valueOf(2 * Math.PI + angle)); 
       } 
      } 

     } 

(les autres méthodes ne sont pas pertinentes, il fut un temps que tous les le code des méthodes individuelles était dans le onTouch.)

Et au cas où vous vous demandez, oui, il y a s a:

preview.addView(angleView); 

Merci beaucoup!

EDIT: Tout le code est à l'intérieur de la méthode onCreate(), à l'intérieur d'un Activity.

+0

est-ce dans une activité? Si (oui) n'utilisez pas ApplicationContext, utilisez le contexte approprié. Ensuite, pour le tester, forcer le TextView à être dans une position simple pour exclure tous vos calculs). Ajoutez LOGS partout pour voir les nombres. –

+0

serait-ce 'new TextView (this)'? – Jeeter

+0

Si vous êtes dans une activité, oui. Si vous êtes dans un nouveau TextView (getActivity()) –

Répondre

0

OK, je l'ai trouvé la vraie raison pour laquelle il ne fonctionne pas (et je me sens assez stupide à ce sujet en ce moment). Si vous regardez, vous voyez que je définis les paramètres comme SCREEN_WIDTH et SCREEN_HEIGHT. Eh bien, j'ai initialisé angleView avant de définir ces deux constantes.

bon, Jeeter: D

+0

Vous devez néanmoins utiliser un contexte d'activité à la place du contexte d'application. SVP vérifiez le lien dans ma réponse comme pourquoi vous devriez utiliser le contexte d'activité. – Raghunandan

1

ApplicationContext Impossible de modifier l'interface utilisateur. Changement:

angleView = new TextView(getApplicationContext()); 

Par:

angleView = new TextView(this); 

Ou si vous êtes à l'intérieur d'un Fragment:

angleView = new TextView(getActivity()); 
+0

même quand je change cela ne fonctionne toujours pas. Cela fonctionnait très bien avec getApplicationContext(), cependant. – Jeeter

Questions connexes