nasıl

2011-07-16 6 views
10

Bir Button basarak TextView ait değiştirmek istediğiniz bir Düğmesi basarak TextView'un metnini değiştirmek için, ancak düzgün bunu nasıl anlamıyorum.nasıl

Bu benim düzen parçasıdır:

<TextView android:id="@+id/counter" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Text" /> 
<Button android:id="@+id/button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Change text!" /> 

Ve bu benim faaliyettir:

içimde onClick() yöntemle neleri içermelidir
public class Click extends Activity { 
    protected void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     setContentView(R.layout.main); 
     final Button button = (Button) findViewById(R.id.button); 
     button.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       // Perform action on click 
       // ??? 
      } 
     }); 
    } 
} 

? göre

cevap

12
  1. yourTextView.setText("New text");

findViewById ve setText yöntemlerini bakın çağırarak id

  • değiştirme metni ile TextView bulun.

  • +0

    Önemli bir t hing: alan sadece onClick bloğundan çıktığınızda güncellenir, aynı alanı iki kez güncelleyemezsiniz. – onizukaek

    3
    TextView tv = (TextView) v; 
    tv.setText("My new text"); 
    

    Düzenleme: İşte işleyicinizin geçerli:

    button.setOnClickListener(new View.OnClickListener() { 
         public void onClick(View v) { 
          //TextView tv = (TextView) v; //code corrected 
          TextView tv= (TextView) findViewById(R.id.counter); 
          tv.setText("My new text"); 
         } 
    }); 
    

    TextView'un görünümü = (TextView'un) findViewById (R.id.counter);

    +0

    Umarım bunun tamamen yanlış olduğunu biliyorsunuzdur. OnClick() 'yöntemindeki' v' parametresi tıklanan görünümdür. Şimdi eğer kod ile bir 'Button' tıklarsa, bu gerçekleşir ki' Button'ınızın metni değişir. –

    +0

    Oh! Düğme ve TextView farklıdır. Evet benim hatam. Cevabımı sileceğim. – Vikas

    10
    import android.app.Activity; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.Button; 
    
    public class Click extends Activity { 
    int i=0; 
        protected void onCreate(Bundle icicle) { 
         super.onCreate(icicle); 
         setContentView(R.layout.main); 
         final TextView mTextView = (TextView) findViewById(R.id.counter) 
         mTextView.setText("hello "+i); 
    
         final Button button = (Button) findViewById(R.id.button); 
         button.setOnClickListener(new View.OnClickListener() { 
          public void onClick(View v) { 
           // Perform action on click 
           i=i+1; 
           mTextView.setText("hello "+i); 
          } 
         }); 
        } 
    } 
    

    Umut bu Sen setText ("şey") yöntemi ile yapabilirsiniz ihtiyacını

    +0

    Teşekkürler. Bu kod çalışır. – Roman

    +0

    hoş geldiniz .. ne kadar oy Man –

    +0

    Bunu denedim ve bu gibi bir şeyi değiştirdim mTextView.setText (Integer.toString (i)); 've çalıştı. Teşekkür ederim. +1 – InnocentKiller

    0

    vermektedir. onclick yılında

    0

    , şöyle istenen metni TextView nesne alıp ayarlayın:

    tvOBJECT.setText("your text"); 
    
    0

    Java yalnızca hiçbir XML versiyonu

    şeyler daha açık hale getirmek için:

    import android.app.Activity; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.LinearLayout; 
    import android.widget.TextView; 
    
    public class Main extends Activity { 
        private int i; 
        @Override 
        protected void onCreate(Bundle savedInstanceState) { 
         super.onCreate(savedInstanceState); 
         this.i = 0; 
    
         final TextView tv = new TextView(this); 
         tv.setText(String.format("%d", this.i)); 
    
         final Button button = new Button(this); 
         button.setText("click me"); 
         button.setOnClickListener(new View.OnClickListener() { 
          @Override 
          public void onClick(View view) { 
           Main.this.i++; 
           tv.setText(String.format("%d", Main.this.i)); 
          } 
         }); 
    
         final LinearLayout linearLayout = new LinearLayout(this); 
         linearLayout.addView(button); 
         linearLayout.addView(tv); 
         this.setContentView(linearLayout); 
        } 
    } 
    

    Android üzerinde test edilmiştir 22.