How do I clear the text in Android TextView?

41,088

Solution 1

Try this,

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("");
    }
    }
  }

Solution 2

To answer your question, I use this method in my apps. Instead of setting the text to (""), it clears the stored value using the getText().clear(); method. Personally, I use this because it looks more professional and makes proper use of the clear command in android.

clearButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    editText.getText().clear();
                }
            });

EDIT: The original post had the tag 'EditText', so I answered the question with that in mind. This works with EditText, With a TextView, just call textview.setText("");

Solution 3

Yes it is. Your problem is related to the 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("");
                }
            }
        });

in this case if(v == clear) is always false. You have to register a View.OnClickListener() for the clear view/button, or make your Activity implements View.OnClickListener and set for both the button this as setOnClickListener

Solution 4

You're going wrong with your onClick method. You are adding it for 1 button, and then checking which button it is. It is never going to be your 'clear' button, since it only listens to your 'add' button onclick.

Solution 5

Use

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("");
            }
        });
}

Share:
41,088
An SO User
Author by

An SO User

Updated on October 07, 2020

Comments

  • An SO User
    An SO User over 3 years

    So I have an Android program like so:

    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("");
                    }
                }
            });
        }
    }  
    

    The button to add text to the TextView works perfectly fine however the text never clears.
    My belief was that the operation of TextView would be analogous to JTextField or JTextArea where setting the text to "" clears it.

    How do I clear the text?