2011-07-16 149 views
10

我想通過按Button來更改TextView,但不知道如何正確執行。如何通過按下按鈕來更改TextView的文本

這是我的佈局的一部分:

<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!" /> 

這是我的活動:

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 
       // ??? 
      } 
     }); 
    } 
} 

我應該把裏面onClick()方法?

回答

12
  1. 查找ID
  2. 更改文本TextView的調用yourTextView.setText("New text");

參考findViewByIdsetText方法。

+0

一個重要的t hing:只有當您離開onClick塊時才更新該字段,但無法兩次更新相同的字段。 – onizukaek

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

編輯: 這裏是您的處理程序:

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的視圖=(TextView的)findViewById(R.id.counter);

+0

我希望你知道這是完全錯誤的。 'onClick()'方法中的'v'參數是點擊的視圖。現在,如果他用你的代碼點擊一個'Button',所有發生的事情就是'Button'的文本改變了。 –

+0

哦! Button和TextView是不同的。是的,這是我的錯誤。我要刪除我的答案。 – 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); 
      } 
     }); 
    } 
} 

希望這會成爲你的需要

+0

謝謝。此代碼有效。 – Roman

+0

歡迎..什麼投票人 –

+0

我試過這個,我修改這樣的'mTextView.setText(Integer.toString(i));',它的工作。謝謝。 +1 – InnocentKiller

0

你可以用的setText( 「什麼」)方法做到這一點。

0

onclick,採取TextView的對象,並設置所需的文字,像這樣:

tvOBJECT.setText("your text"); 
0

的Java只沒有XML版本

爲了使事情變得更加明確:

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上測試22.

相關問題