Как изменить текст TextView, нажав кнопку - PullRequest
11 голосов
/ 16 июля 2011

Я хочу изменить TextView, нажав Button, но не понимаю, как это сделать правильно.

Это часть моего макета:

<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() метод?

Ответы [ 7 ]

15 голосов
/ 16 июля 2011

Согласно: http://developer.android.com/reference/android/widget/TextView.html

TextView view = (TextView) findViewById(R.id.counter);
view.setText("Do whatever");
12 голосов
/ 16 июля 2011
  1. Найти текстовое представление по id
  2. Изменить текст, вызвав yourTextView.setText("New text");

См. findViewById и setText методы.

9 голосов
/ 16 июля 2011
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);
            }
        });
    }
}

Надеюсь, это послужит вашей потребности

3 голосов
/ 16 июля 2011
TextView tv = (TextView) v;
tv.setText("My new text");

Edit: Вот ваш обработчик:

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

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.

0 голосов
/ 13 мая 2013

В onclick возьмите объект TextView и установите желаемый текст следующим образом:

tvOBJECT.setText("your text");
0 голосов
/ 16 июля 2011

Вы можете сделать это с помощью метода setText ("что-нибудь").

...