2014-10-18 47 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 
}