2015-04-02 1 views
0

dans mon exemple de projet: onDraw besoin d'un int à tirer de l'activité principale, lors de l'initialisation du paramètre à 1 dans MainActivity, ce ne est pas dessiner quoi que ce soit,Comment passer un int à mon onDraw dans Android? Quel est le problème dans mon code?

// MyView classe étend Voir

private int parameter=0;//if i change to 1 it will draw, 
//but i want set it from main Activity 

    public void setParameter(int param) 
    { 
     this.parameter=param; 
     invalidate(); 
     Log.i("tag9", this.parameter+" setParameter"); 
    } 

      @Override 
      protected void onDraw(Canvas canvas) { 
       Log.i("tag9",parameter + " ondraw"); 

       if(this.parameter==0){ 
        return;} 
     //Drawing code ... 
      } 

// en MainActivity:

MyView myView = new MyView(this); 
     myView.setParameter(1); 

// code Xml:

<RelativeLayout ...> 


    <view 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     class="(packagename).MyView" 
     android:id="@+id/view" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="138dp"/> 
</RelativeLayout> 

// DDMS

1 setparameter 
0 ondraw // its shouldnt be 0; 
+1

Ajoutez-vous quelque chose à une mise en page? Je ne vois pas cela à l'écran dans le code que vous avez publié. –

+0

je l'ajoute à partir de design xml \ customView – Mehraban

+0

Non, vous n'êtes pas. Vous le créez via new. Cela crée une nouvelle vue dans aucune disposition. Si vous voulez référencer un ensemble de vues en XML, utilisez findViewById –

Répondre

0

thnx à Gabe Séchan, Vous créez via nouveau. Cela crée une nouvelle vue dans aucune disposition. Si vous voulez référencer un ensemble de vues en XML, utilisez findViewById - Gabe Sechan

MyView myView = (MyView)this.findViewById(R.id.view); 
    myView.setParameter(1);