2016-04-22 34 views
0

我是一名初學者,開始時我創建了一個擁有多個工作站的收音機應用程序,但我遇到了一個問題。Java中的intents之間的難度(Android Studio)

當我爲收音機播放「Play」時,它開始播放,然後我回到先前的活動(電臺列表),當我再次回到正在播放的同一收音機並點擊「暫停」時,它將「不玩「。 (我做了一個烤麪包,所以當我在播放器沒有播放的時候點擊「暫停」時它擴散了「不播放」),但收音機仍然是「播放」。

下面是2個按鈕的代碼(播放和暫停):

btnPlayMFM.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 

     if (isOnline() == true) { 
      if (isPlaying() == false) { 

        Toast t = Toast.makeText(MosaiqueFM.this, "Loading \nPlease Wait", 10000); 
        t.show(); 

        try { 
         mediaPlayer.reset(); 
         mediaPlayer.setDataSource(stream_url); 
         mediaPlayer.prepareAsync(); 

         mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
          @Override 
          public void onPrepared(MediaPlayer mp) { 
           mp.start(); 
          } 
         }); 

        } catch (IOException e) { 
         e.printStackTrace(); 
        } 


       } else if (isPlaying() == true) { 
        Toast t2 = Toast.makeText(MosaiqueFM.this, "Playing", 2000); 
        t2.show(); 
       } 
      } 
      if (isOnline() == false){ 
       Toast t = Toast.makeText(MosaiqueFM.this, "Internet Connection Required", 3000); 
       t.show(); 
      } 
     } 

    }); 

    btnPauseMFM.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (isPlaying() == true) { 
       mediaPlayer.stop(); 
      } else if (isPlaying() == false){ 
       Toast t = Toast.makeText(MosaiqueFM.this, "Not Playing", 2000); 
       t.show(); 
      } 
     } 
    }); 

public boolean isPlaying() { 
    return(mediaPlayer != null && mediaPlayer.isPlaying()); 
} 

public boolean isOnline() { 
    cm = (ConnectivityManager) getSystemService(this.CONNECTIVITY_SERVICE); 
    return cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnectedOrConnecting(); 
} 
+0

嗨,我編輯了您的問題,使其更具可讀性,並且我注意到您可能有錯誤。您在執行'btnPauseMFM.setOnClickListener'之前不要關閉'btnPlayMFM.setOnClickListener',因此您可以在爲播放按鈕設置偵聽器的部分中設置暫停按鈕的偵聽器。 –

+0

另請閱讀[this指導](https://stackoverflow.com/help/how-to-ask)關於如何提出一個好問題,因爲它會覆蓋一些必要的細節,使問題成爲一個好問題。我注意到的是看起來你的標題並沒有解釋你的問題,而是解釋了爲什麼你發佈了你的問題。確保你的題目儘可能詳細地說明你的具體問題或問題。 –

回答

1

如果你有兩個活動 - 一個更加顯出電臺列表,另一個用於播放你的時候/暫停特定的無線電臺則顯然將離開第二次活動,你的活動將被破壞,mediaPlayer將變爲空,所以,當你回來時,isPlaying()將是錯誤的。 這就是爲什麼你得到這個Toast -

Toast t = Toast.makeText(MosaiqueFM.this, "Not Playing", 2000); 

建議 - 對於這些類型的應用程序,你不想無線電停止,當用戶離開你的應用程序。所以我建議你使用服務作爲遊戲目的。