2010-11-07 28 views
0

J'ai une vue personnalisée qui dessine un canevas. J'essaie d'invoquer des modifications dans le canevas lorsque l'utilisateur appuie sur un bouton de l'activité à laquelle cette vue est liée. Actuellement, j'essaie de le faire en appelant une méthode publique, appelée setNewDrawable, que j'ai créée dans la vue.Comment appeler les modifications apportées à un objet de vue personnalisé à partir de son activité

Le débogueur me donne différentes valeurs pour l'ID de vue selon que je suis dans setNewDrawable ou dans la méthode OverDidden onDraw lorsque je publie un Invalidate. Par exemple, les variables du débogueur affichent: (This - MyView id = 830067720176) ou (This - MyView id = 830067712344) dans setNewDrawable et onDraw, respectivement. Cela me fait penser que j'ai essentiellement deux copies de l'objet et que je suis essentiellement en interaction avec le mauvais.

Comment puis-je obtenir des informations sur ma vue personnalisée afin de déterminer ce qu'elle dessine?

Voici le code que je cours.

public class Main extends Activity { 

    MyView mView; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View v = li.inflate(R.layout.main, null); 
     mView= (MyView) v.findViewById(R.id.my_view); 

     //A button to modify what's drawn on the canvas 
     Button switchLeft = (Button) findViewById(R.id.switch_left); 
     switchLeft.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       mView.setNewDrawable(); 
       mView.postInvalidate(); 
       } 
      }); 
     } 
    } 

Merci à tous!

Répondre

0

Le problème était le gonfleur de disposition. Je l'ai enlevé et ça a bien fonctionné.