【问题标题】:How to update TextView string on button click?如何在按钮单击时更新 TextView 字符串?
【发布时间】:2013-11-08 02:57:29
【问题描述】:

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

我现在要做的是根据按钮点击更新原始 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);

        }
    });

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

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

【问题讨论】:

  • 您面临什么问题?您想在特定按钮单击时显示一些特定文本。这是您想要的吗?
  • 是的,原始文本显示告诉用户该做什么,然后我希望每次单击按钮时图表下方的文本字符串都会更改。因此每个按钮都会有一个匹配的字符串三张图。

标签: android textview onclicklistener


【解决方案1】:

将成员变量添加到名为 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 是在该方法之外定义的。

【讨论】:

    【解决方案2】:

    虽然您的问题是关于更改文本视图,但您似乎已经想通了。只需删除setContentView(textView),(因为它将替换您的整个视图),您的方法将正常工作。

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

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

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

    【讨论】:

      【解决方案3】:

      在我的解决方案中,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;
           }
       }   
      

      【讨论】:

      • 在这种情况下,图像容器是imageswitcher。实现在这里仍然有效吗?还有YOUR_STRING_01如何引用此类中的图表字符串?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-21
      相关资源
      最近更新 更多