如何在按钮单击时更新TextView字符串?

时间:2013-11-07 18:28:22

标签: android textview onclicklistener

我有一个示例活动,可以在按钮点击时在数组中显示三个图表。

我现在要做的是根据按钮点击每次点击按钮更新原始TextView字符串。我知道如何使用这样的数字来实现:

 tView = (TextView) findViewById(R.id.textView1);
    clickhere = (Button) findViewById(R.id.button1);

    clickhere.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            num++;
            String display = String.format(getString(R.string.prompt), num);
            tView.setText(display);
            setContentView(tView);

        }
    });

但是如果是字符串,我该如何做?我想知道是否有一种方法可以将其编码为按钮单击“一个”然后显示相关文本,然后在按钮上单击“两个”显示相关文本。原始文本显示告诉用户该做什么,然后我想要每次单击按钮时,都会在图表下方更改文本字符串。因此,三个图表中的每一个都会有匹配的字符串。

我不确定你是否可以通过计算按钮点击来实现它,还是有更好的方法?

Diagram activity

3 个答案:

答案 0 :(得分:0)

将成员变量添加到名为mButtonClicks

的活动中
private int mButtonClicks;

然后在按钮的onClick上,更新号码。

clickhere.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
        mButtonClicks++;
        String display = String.format(getString(R.string.prompt), mButtonClicks);
        tView.setText(display);

    }
});

我猜这个代码在你的onCreate()方法中。确保在该方法之外定义了mButtonClicks。

答案 1 :(得分:0)

虽然你的问题是谈论改变文本视图,但看起来你已经弄明白了。只需删除setContentView(textView),(因为这将取代整个视图),您的方法就可以正常使用。

如果您还询问如何将整数转换为拼写出来的字符串:

在strings.xml中,创建所有拼写的字符串。然后创建一个帮助器方法以从整数中获取String:

protected String integerToSpelledOutString(int anInt){
    int resource = 0;

    switch (anInt){
    case 1:
        resource = R.string.one;
        break;
    case 2:
        resource = R.string.two;
        break;
    /*etc. for all integers you want to support*/
    }

    return getString(resource);
}

答案 2 :(得分:0)

在我的解决方案中,textview仅由NextButtone处理。

private int clicks = 1;

tView = (TextView) findViewById(R.id.textView1);
clickhere = (Button) findViewById(R.id.button1);

clickhere.setOnClickListener(new View.OnClickListener() {
     public void onClick(View v) {             
         tView.setText(getMyString(clicks++));             
     }
 });

 public String getMyString(int variable){
     switch(variable){
         case 1:
             return YOUR_STRING_01;
             break;
         case 2:
             return YOUR_STRING_02;
             break;
         case 3:
             return YOUR_STRING_03;
             break;
     }
 }