2014-10-18 4 views
-1

Мне нужно создать медиаплееры на основе трех условий if. В классе обслуживания я создаю медиаплееры. Код в onstartcommand класса обслуживания приведен ниже. В режиме отладки я обнаружил, что когда день == «day1» и servicename == «startervice1» элемент управления не входит в оператор if, а local1 == «betty» не выполняется. поэтому mPlayer и mPlayer2 равны нулю. Они не созданы.несколько операторов 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

Попробуйте использовать переключатель заявление, он будет выглядеть более организованными и может помочь вам в контактный указывая, что именно неправильно. Кроме того, используйте Log.d для отладки вашего кода и проверки значений переменной и посмотрите, где сбой кода. –

+1

Используйте функцию String.equals (String other) для сравнения строк, а не оператора ==. – biegleux

+0

использование подобный если ("betty" .equals (local1)) – Amy

ответ

3

Попробуйте это, ..

Строка вы должны использовать .equals("")

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

Изменить что каждая вещь ..

== всегда просто сравнивает два ссылки

+0

спасибо, проблема решена. – user3715224

2

Попробуйте использовать равно функции, как:

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