2013-08-19 82 views
-1

我的主菜單有四個按鈕用於安卓遊戲。在我的選擇中,有和關閉。當用戶點擊開啓按鈕時,當我開始點擊播放時,音樂應該播放。如果用戶點擊關閉,音樂將無法播放。但默認情況下,音樂將播放。開啓/關閉Android中的音樂

我試着自己編碼,如果用戶點擊on按鈕,那麼這個sign變量將設置爲1,並且這個值將傳遞給播放活動。如果符號值等於1,音樂將開始;如果爲0,音樂將不會播放。但是,這樣做後,我點擊後,結果爲「FORCE CLOSE」我的遊戲。

我有我的選擇活動驗證碼:

musicOn.setOnClickListener(new OnClickListener(){ 

    @Override 
    public void onClick(View arg0) { 
     // TODO Auto-generated method stub 

    Intent put = new Intent(getApplicationContext(), Level1.class); 

    musicSwitch = 1; 
    Bundle cargo = new Bundle(); 
    cargo.putInt("sign", musicSwitch); 

    put.putExtras(cargo); 
    } 
}); 

musicOff.setOnClickListener(new OnClickListener(){ 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 

    Intent put = new Intent(getApplicationContext(), Level1.class);    
    musicSwitch = 0; 
    Bundle cargo = new Bundle(); 
    cargo.putInt("sign", musicSwitch); 

    put.putExtras(cargo); 
    } 

}); 

而這一次爲我的1級活動:

int value=1; 

Bundle cargo = getIntent().getExtras(); 
value = cargo.getInt("sign"); 

if(value==1){ 
MediaPlayer mPlayer = MediaPlayer.create(Level1.this, R.raw.sounds); 
mPlayer.start(); 
mPlayer.setLooping(true); 
} 
+1

您需要更具體,請發佈一些代碼 – Pavlos

+0

代碼添加:)對不起。 – pingboo23

+0

你可以發佈logcat嗎? –

回答

0

請張貼logcat的更準確。

我認爲這是強制關閉,因爲你沒有告訴它當值等於0

if(value==1){ 
MediaPlayer mPlayer = MediaPlayer.create(Level1.this, R.raw.sounds); 
mPlayer.start(); 
mPlayer.setLooping(true); 
} else if(value == 0){ 
mPlayer.stop(); 
} 

做什麼,我建議你做MPlayer的靜態不是隻有if語句。

0

您正在創建意圖,但沒有對他們做任何事情。我想你是假設

Intent put = new Intent(getApplicationContext(), Level1.class); 

將讓你額外添加到最初推出的活動意圖,但事實並非如此。除非您使用它來啓動新活動,否則您創建的這個意圖不會執行任何操作。在onClick方法完成後,它只會被GC轉儲。

因此,當您運行getIntent().getExtras(); Bundle時,它返回的將不包含您在該onClick方法中添加的額外內容。

使用可以被視圖和活動訪問的靜態成員變量會更好。如果你想讓它在遊戲會話之間持續存在,請將其存儲在SharedPreference中。