Как очистить текст в Android TextView?
Итак, у меня есть такая программа для Android:
package com.example.androiddemo;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
public class AndroidDemo extends Activity {
String[] messages = {"Short Text",
"I want to show some really long text" +
"on the display of the phone. " +
"Having run out of ideas on what to type, " +
"I am adding this text which makes absolutely " +
"no sense."};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button add = (Button) findViewById(R.id.addBtn);
final Button clear = (Button) findViewById(R.id.clrBtn);
final EditText text = (EditText) findViewById(R.id.display);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(v == add){
text.setText(messages[new java.util.Random().nextInt(messages.length)]);
}else if(v == clear){
text.setText("");
}
}
});
}
}
Кнопка для добавления текста в TextView
работает отлично, однако текст никогда не очищается.
Я полагал, что операция TextView
будет аналогична JTextField
или JTextArea
, где установка текста на ""
очищает его.
Как очистить текст?
5 ответов:
Попробуйте это,
public class AndroidDemo extends Activity implements OnClickListener{ Button add, clear; EditText text; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); add = (Button) findViewById(R.id.addBtn); clear = (Button) findViewById(R.id.clrBtn); text = (EditText) findViewById(R.id.display); add.setOnClickListener(this); clear.setOnClickListener(this); } @Override public void onClick(View v){ if(v == add){ text.setText(messages[new java.util.Random().nextInt(messages.length)]); }else if(v == clear){ text.setText(""); } } }
Да, это так. Ваша проблема связана с onClickListener.
add.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(v == add){ text.setText(messages[new java.util.Random().nextInt(messages.length)]); }else if(v == clear){ text.setText(""); } } });
В этом случае
if(v == clear)
всегда ложно. Вы должны зарегистрироватьView.OnClickListener()
дляclear
вида/кнопки, или сделать вашу деятельность реализуетView.OnClickListener
и установить для обеих кнопокthis
какsetOnClickListener
Вы ошибаетесь с вашим методом onClick. Вы добавляете его для 1 кнопки, а затем проверяете, какая это кнопка. Это никогда не будет ваша кнопка "Очистить", так как он только слушает вашу кнопку "Добавить" onclick.
Чтобы ответить на ваш вопрос, я использую это в своих приложениях, вместо установки текста в
("")
, он очищает его с помощью методаgetText().clear();
. Лично я использую его, потому что он выглядит более профессионально и правильно использует четкую команду в android.clearButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { editText.getText().clear(); } });
Чтобы уточнить, это работает с EditText, с TextView, просто сделайте textview.setText ("");
Использовать
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final TextView tv=(TextView)findViewById(R.id.textView); Button btnclear=(Button)findViewById(R.id.btnClear); btnclear.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { tv.setText(""); } }); }