2015-06-15 44 views
1

我需要我的應用程序在切換按鈕被選中時播放所有聲音,並在未選中時停止播放它們。所有聲音是指其他按鈕出現在活動和其他活動中時播放的聲音被按下。使用切換按鈕來控制聲音

以下是我的切換按鈕:

<ToggleButton 
    android:layout_width="70dp" 
    android:layout_height="70dp" 
    android:id="@+id/toggleButton" 
    android:button="@drawable/check" 
    android:background="@null" 
    android:onClick="togglesound" 
    /> 

Check.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<!-- When selected, use grey --> 
<item android:drawable="@drawable/speaker" 
android:state_checked="true" /> 
<!-- When not selected, use white--> 
<item android:drawable="@drawable/stopsound" 
android:state_checked="false"/> 
</selector> 

我已經採取了靜態變量「玩」,其價值我打算當切換按鈕被選中設置爲1,當它不是時,爲0。

public void togglesound(View view) { 
    boolean on = ((ToggleButton) view).isChecked(); 

    if (on) { 
    play=1; 
     // Enable sound 
    } else { 
     play=0; 
     // Disable sound 

    } 

這之後,我用「玩」玩所需的聲音把條件

if(play==1) 
{ 
over = MediaPlayer.create(Play.this, R.raw.over); 
over.start(); 
over.setOnCompletionListener(
newMediaPlayer.OnCompletionListener() 
{  
public void onCompletion(MediaPlayer mp) { 
mp.release(); 
       } 

      }); 
     } 
else 
{} 

我現在面臨的問題是,切換按鈕正常工作,第一次被點擊,但隨後即使切換按鈕未被選中,也會播放聲音。

+0

只有當它使用的東西是使用'on'變量的要點是設置'play'的東西。爲什麼'play'不是第一名? –

+0

以前播放的是布爾值,但它不起作用,所以我將它作爲整數。 – TeeKay

+0

我使用'play',因爲我在播放聲音的地方有很多地方,所以我認爲使用國旗會很好。如果您認爲有更好的方法,那麼請提出建議。 – TeeKay

回答

1

終於修好了!!

而不是使用「玩」和「」我只用「玩」這是一個靜態布爾variable.So,代碼減少至 -

public void togglesound(View view) { 
     play = ((ToggleButton) view).isChecked(); 
     } 

而且我不得不添加幾行保存切換按鈕的狀態。

private static Bundle bundle = new Bundle(); 
ToggleButton tg=(ToggleButton)findViewById(R.id.toggleButton); 

    public void onPause() { 
    super.onPause(); 
    bundle.putBoolean("ToggleButtonState", play); 
    } 

@Override 
public void onResume() { 
    super.onResume(); 
    tg.setChecked(bundle.getBoolean("ToggleButtonState",false)); 
    }