次の問題があります。背景色を変更するための 3 つのボタン (それぞれ青、赤、緑) と、クリックすると音が鳴る 5 つのラジオ ボタンがあります。背景色変更ボタンとサウンド ラジオ ボタンの両方が独立して完全に正常に機能します。それらを 1 つの画面にまとめるとすぐに、背景色の変更ボタンの 1 つが選択されると、アプリケーションがクラッシュします。問題は RadioButton 行にあり、特に次の場所にあります。
RadioButton rb = (RadioButton) v;
そのエラーに対して何をすべきかわかりません。誰か助けてくれませんか?
onClick メソッドのコードは次のとおりです。
public void onClick(View v) {
RelativeLayout rl = (RelativeLayout) findViewById(R.id.RelativeLayout1);
switch (v.getId())
{
case R.id.button1:
Toast.makeText(getBaseContext(), "You switched the color to red!" , Toast.LENGTH_SHORT ).show();
rl.setBackgroundColor(Color.RED);
break;
case R.id.button2:
Toast.makeText(getBaseContext(), "You switched the color to green!" , Toast.LENGTH_SHORT ).show();
rl.setBackgroundColor(Color.GREEN);
break;
case R.id.button3:
Toast.makeText(getBaseContext(), "You switched the color to blue" , Toast.LENGTH_SHORT ).show();
rl.setBackgroundColor(Color.BLUE);
break;
case R.id.cancel:
Toast.makeText(getBaseContext(), "This application will be closed!" , Toast.LENGTH_SHORT ).show();
finish();
break;
}
//Perform action on clicks
RadioButton rb = (RadioButton) v;
//get the user sound settings
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
//get current volume
float actualVolume = (float) audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
//get maximum volume
float maxVolume = (float) audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = actualVolume / maxVolume;
//is the sound loaded already?
if(loaded) {
//play the sound
if (rb.getText().toString().equals("Clong!"))
gameAudio.play(soundIDs[0], volume, volume, 1, 0, 1f);
else if (rb.getText().toString().equals("Hammering!"))
gameAudio.play(soundIDs[1], volume, volume, 1, 0, 1f);
else if (rb.getText().toString().equals("Chainsaw Attack!"))
gameAudio.play(soundIDs[2], volume, volume, 1, 0, 1f);
else if (rb.getText().toString().equals("Smoke alarm!"))
gameAudio.play(soundIDs[3], volume, volume, 1, 0, 1f);
else if (rb.getText().toString().equals("Sharp the knife!"))
gameAudio.play(soundIDs[4], volume, volume, 1, 0, 1f);
}
}