Java 将多个值传递给Toast

Java 将多个值传递给Toast,java,android,radio-button,toast,Java,Android,Radio Button,Toast,我一直在尝试制作一个小应用程序来学习android开发,我设置了4个单选按钮,每个按钮代表不同的颜色。我的问题是,如果用户选择单选按钮,我无法找到将值从单选按钮传递到toast的方法,例如,如果用户选择黄色和蓝色,toast将输出用户选择了蓝色和黄色的颜色,我只能找到将一个值传递给toast的文档 怎么过来 chooseColor.setOnClickListener(new View.OnClickListener() { @Override public void onCl

我一直在尝试制作一个小应用程序来学习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();
    }
});

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


作为旁注,无论是否选择蓝色单选按钮,当前代码都将显示“蓝色”。您将需要几个
if
语句来确定选择了哪些单选按钮。

我同意代码专家的意见,除了您应该检查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是一个包含单选按钮的放射组,您可能无法检查多个单选按钮(我不确定,但这一定是一种方式)。

也许您可以解释为什么您认为“这种方式更好”。(并不是说我不同意。)它不是指你的解决方案或你,“它”指的是David的代码,我想它更好,因为它正在我的项目中工作。我理解你的意思。我只是建议你对你的答案作出解释。当然还有其他方法可以编译和运行。为什么您建议的解决方案比其他备选方案更好?为什么你的建议会改进OP的代码?