6

所以我有一个像这样的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类似于将文本设置为清除它的位置。 JTextFieldJTextArea""

如何清除文本?

4

5 回答 5

14

尝试这个,

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("");
    }
    }
  }
于 2013-07-04T07:45:01.103 回答
4

为了回答您的问题,我在我的应用程序中使用了这种方法。它没有将文本设置为(""),而是使用该getText().clear();方法清除存储的值。就个人而言,我使用它是因为它看起来更专业,并且可以正确使用 android 中的 clear 命令。

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

编辑:原来的帖子有标签'EditText',所以我带着这个想法回答了这个问题。这适用于 EditText,使用 TextView,只需调用textview.setText("");

于 2017-02-25T19:57:32.383 回答
3

是的。您的问题与 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视图/按钮注册一个,或者让您的 Activity 实现View.OnClickListener并将两个按钮设置thissetOnClickListener

于 2013-07-04T07:45:07.157 回答
2

你的 onClick 方法出错了。您正在为 1 个按钮添加它,然后检查它是哪个按钮。它永远不会成为您的“清除”按钮,因为它只会在点击时听您的“添加”按钮。

于 2013-07-04T07:45:32.573 回答
1

利用

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

于 2016-07-30T15:49:29.560 回答