2014-10-18 48 views
-1

我必須根據三個條件創建媒體播放器。在服務階層,我正在創建媒體播放器。下面是服務類的onstart命令中的代碼。在調試模式下,我發現當day ==「day1」和servicename ==「startservice1」控件不在if語句內部並且local1 ==「betty」未執行時。所以,mPlayer和mPlayer2等於null。它們不是被創建的。多if語句(嵌套3)不工作在Android

MyService.java

if (day == "day1" && servicename == "startservice1") { 

     if (local1 == "betty") 
      mPlayer = MediaPlayer.create(this, R.raw.betty); 
     else if (local1 == "betty2") 
      mPlayer = MediaPlayer.create(this, R.raw.betty2); 
     else if (local1 == "thorne1") 
      mPlayer = MediaPlayer.create(this, R.raw.thorne1); 
     else if (local1 == "kick") 
      mPlayer = MediaPlayer.create(this, R.raw.kick); 


     if (local2 == "betty") 
      mPlayer1 = MediaPlayer.create(this, R.raw.betty); 
     else if (local2 == "betty2") 
      mPlayer1 = MediaPlayer.create(this, R.raw.betty2); 
     else if (local2 == "thorne1") 
      mPlayer1 = MediaPlayer.create(this, R.raw.thorne1); 
     else if (local2 == "kick") 
      mPlayer1 = MediaPlayer.create(this, R.raw.kick); 

    } else if (day == "day1" && servicename == "startservice2") { 

     if (local2 == "betty") 
      mPlayer = MediaPlayer.create(this, R.raw.betty); 
     else if (local2 == "betty2") 
      mPlayer = MediaPlayer.create(this, R.raw.betty2); 
     else if (local2 == "thorne1") 
      mPlayer = MediaPlayer.create(this, R.raw.thorne1); 
     else if (local2 == "kick") 
      mPlayer = MediaPlayer.create(this, R.raw.kick); 
    } 
+1

嘗試使用switch語句,它看起來更有條理,能幫助你在針指向什麼是錯的。此外,使用Log.d來調試您的代碼並檢查變量的值並查看代碼失敗的位置。 – 2014-10-18 12:14:37

+1

使用String.equals(String other)函數比較字符串,而不是==運算符。 – biegleux 2014-10-18 12:14:54

+0

使用like if(「betty」.equals(local1)) – Amy 2014-10-18 12:15:08

回答

3

試試這個..

字符串你應該使用.equals("")

if(day.equals("day1") && servicename.equals("startservice1")) 

變化,每一件事物..

==永遠只是比較兩個引用

+0

謝謝,問題解決了。 – user3715224 2014-10-18 13:59:48

2

使用等於嘗試功能,如:

if("betty".equals(local1)) 
{ 
    //Do Something 
}