0

Android 開発を学ぶための小さなアプリケーションを作成しようとしています。それぞれ異なる色を表す 4 つのラジオ ボタンを設定しました。私の問題は、ユーザーが選択した場合、ラジオ ボタンからトーストに値を渡す方法が見つからないことです。たとえば、ユーザーが黄色と青を選択した場合、トーストはユーザーが青と黄色の色を選択したことを出力します。トーストに 1 つの値を渡すためのドキュメントしか見つかりません。

これをどうやって乗り越える?

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

2 に答える 2

2

Toast.makeText()Toast に表示される文字列を 1 つだけ渡すことができます。+ただし、 を使用して文字列を連結したり、StringBuilderさらに動的に作成したりすることで、必要なすべての情報を含む文字列を簡単に作成できます。

ちなみに、青いラジオボタンが選択されているかどうかに関係なく、現在のコードには「青」と表示されます。ifどのラジオ ボタンが選択されているかを判断するには、いくつかのステートメントが必要です。

于 2013-02-10T22:51:37.710 に答える
0

私は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 である場合、複数のラジオボタンをチェックできない可能性があります (よくわかりませんが、これは仕方がないことです。)

于 2013-02-10T23:13:37.277 に答える