Вопрос:
Итак, у меня есть 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 отлично работает, но текст никогда не очищается.
Я JTextArea что работа TextView будет аналогична JTextField или JTextArea где настройка текста на «» очищает его.
Как очистить текст?
Лучший ответ:
Попробуй это,
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(«»); } } } Ответ №1
Да. Ваша проблема связана с 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) всегда false. Вы должны зарегистрировать View.OnClickListener() для clear представления/кнопки или сделать свою активность реализующей View.OnClickListener и установить для обеих кнопок this как setOnClickListener
Ответ №2
Чтобы ответить на ваш вопрос, я использую это в своих приложениях вместо того, чтобы устанавливать текст в («»), он очищает его с помощью getText().clear(); метод. Лично я использую это, потому что он выглядит более профессиональным и правильно использует ясную команду в android.
clearButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { editText.getText().clear(); } });
Чтобы уточнить, это работает с EditText, с TextView, просто выполните textview.setText(“”);
Ответ №3
Вы ошибетесь в методе onClick. Вы добавляете его для 1 кнопки, а затем проверяете, какая именно кнопка. Это никогда не будет вашей “чистой” кнопкой, поскольку она только прослушивает вашу кнопку “добавить” onclick.
Ответ №4
использование
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(«»); } }); }