【问题标题】:Passing multiple values to Toast将多个值传递给 Toast
【发布时间】:2018-12-07 14:45:29
【问题描述】:

我一直在尝试制作一个小应用程序来学习 android 开发,我设置了 4 个单选按钮,每个按钮代表不同的颜色。我的问题是,如果用户选择它们,我找不到将单选按钮中的值传递给 toast 的方法,例如,如果用户选择黄色和蓝色,则 toast 将输出用户选择了蓝色和黄色的颜色,我只能找到将一个值传递给 toast 的文档。

如何克服这个问题?

chooseColor.setOnClickListener(new View.OnClickListener()
{

    @Override
    public void onClick(View v) 
    {
        blue = (RadioButton) findViewById(selectedId);
        red = (RadioButton) findViewById(selectedId);
        yellow = (RadioButton) findViewById(selectedId);
        green = (RadioButton) findViewById(selectedId);
        brown = (RadioButton) findViewById(selectedId);

        Toast toast = Toast.makeText(getApplicationContext(), 
        blue.getText(), Toast.LENGTH_SHORT);            
        toast.setGravity(Gravity.CENTER|Gravity.CENTER_HORIZONTAL, 0, 0);                   
        toast.show();
    }
});

【问题讨论】:

    标签: java android radio-button toast


    【解决方案1】:

    您只能将单个字符串传递给Toast.makeText() 以在 Toast 中显示。但是,您可以使用+ 将字符串连接在一起或使用StringBuilder 更动态地创建一个包含您想要的所有信息的字符串。

    附带说明一下,无论是否选择了蓝色单选按钮,您当前的代码都会显示“蓝色”。您将需要几个 if 语句来确定选择了哪些单选按钮。

    【讨论】:

      【解决方案2】:

      我只是同意 Code-Guru,除了你应该检查你的 onClick 方法中是否检查了某些东西,最好这样:

      chooseColor.setOnClickListener(new View.OnClickListener()
      {
      
          @Override
          public void onClick(View v) 
          {
      
              blue = (RadioButton) findViewById(selectedId);
              red = (RadioButton) findViewById(selectedId);
              yellow = (RadioButton) findViewById(selectedId);
              green = (RadioButton) findViewById(selectedId);
              brown = (RadioButton) findViewById(selectedId);
      
      
              String str = ", ";
              str += blue.isChecked()?blue.getText()+", ":"";
              str += red.isChecked()?red.getText()+", ":"";
              str += yellow.isChecked()?yellow.getText()+", ":"";
              str += green.isChecked()?green.getText()+", ":"";
              str += brown.isChecked()?brown.getText()+", ":"";
              str = str.subString(0,str.length()-2);
      
              Toast toast = Toast.makeText(getApplicationContext(),str, Toast.LENGTH_SHORT);            
              toast.setGravity(Gravity.CENTER|Gravity.CENTER_HORIZONTAL, 0, 0);                   
              toast.show();
      
          }
      });
      

      此外,如果 chooseColor 是一个包含单选按钮的 RadioGroup,您可能无法检查多个单选按钮(我不确定,但一定是这样。)

      【讨论】:

      • 也许你可以解释为什么你认为“这样更好”。 (并不是我不同意。)
      • 它不是指您的解决方案或您,“它”指的是 David 的代码,我想它更好,因为它正在处理我的项目。
      • 我明白你的意思。我只是建议您对您的答案进行解释。当然还有其他方法可以编译和运行。为什么您建议的解决方案比其他替代方案更好?为什么您的建议改进了 OP 的代码?
      猜你喜欢
      • 2020-07-30
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-31
      • 2019-02-08
      • 2012-08-30
      相关资源
      最近更新 更多