2013-07-04 948 views
3

所以,我有一個Android程序,像這樣:如何清除Android TextView中的文本?

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,其中將文本設置爲""將清除它。

如何清除文本?

+0

儘量不要混淆'TextView'和'EditText'。一個'EditText'類似於'JTextField' /'JTextArea','TextView'和'JLabel'(以及等效的更大的非用戶可編輯框) – ataulm

+0

@ataulm感謝您提到這個! :-) –

回答

9

試試這個,

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

嗯..是一個很好的做法,讓'Activity'成爲一個監聽器,還是我應該自己創建一個類並讓它成爲一個監聽器? :-) –

+1

是的,通過創建你自己的課程也很好練習 –

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視圖/按鈕,或讓你的活動實現View.OnClickListener和兩個按鈕設置爲thissetOnClickListener

+0

可以有一個廣義的監聽器處理所有的2個按鈕嗎? –

+0

是的,我已經指出了我的答案。您可以創建一個實現View.OnClickLister的類,併爲這兩個按鈕使用相同的實例 – Blackbelt

1

你與你的onClick方法去錯了。您正在爲1個按鈕添加它,然後檢查它是哪個按鈕。它永遠不會是你的'清除'按鈕,因爲它只能聽取你點擊'添加'按鈕。

+0

是否有可以使用'if-elseif ladder'處理所有按鈕的通用偵聽器? –

+0

@LittleChild是的,你的Activity可能是這個普通的監聽器(參見No_Rulz的答案),但你仍然需要將它添加到每個按鈕。 – ataulm

+0

是的,看看No_Rulz的回答。你讓你的Activity擴展OnClickListener(注意不要導入對話框,而是查看一個!),它會給你一個一般的onClick方法。你可以用button.setOnClickListener(this)來訂閱你的所有按鈕。在onClick方法中,只需切換/大小寫。 –

0

使用

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); 
 

 
\t btnclear.setOnClickListener(new View.OnClickListener() { 
 
      @Override 
 
      public void onClick(View view) { 
 
       tv.setText(""); 
 
      } 
 
     }); 
 
}

1

要回答你的問題,我在我的應用程序使用,而不是文本設置爲(""),它使用getText().clear();方法它清除。就個人而言,我使用這個,因爲它看起來更專業,並在android中正確使用clear命令。爲了澄清,這與EditText一起工作,使用TextView,只要textview.setText(「」);

+0

沒有看到清晰的功能,因爲你在這裏描述它。 – Hassan

+0

它對我很好。你確定這是一個編輯文本? –

+0

我的不好。這是一個TextView。謝謝@Avi – Hassan