2011-12-15 2 views
1

У меня есть оператор if, который не работает, он не проверяет его состояние, даже если он правильный, и я не могу понять это поведение. , пожалуйста, помогите мне найти ошибку. это мой код:если инструкция не проверяет условие

public Dialog onCreateDialog(int id) { 
     AlertDialog.Builder alert = new AlertDialog.Builder(this); 
    final SharedPreferences userPreferences = this.getSharedPreferences("strings", MODE_PRIVATE); 
    final Editor edit = userPreferences.edit(); 

    switch (id) { 
    case 1: 
      alert.setTitle(lang_menu[3]);//"Gestione Preferiti" 
     alert.setIcon(R.drawable.ic_menu_star); 
     final String namesFav = userPreferences.getString("Name_Fav", ""); 
     final String locfav = userPreferences.getString("Loc_Fav", ""); 
     final String numfav = userPreferences.getString("Num_Fav", ""); 
     final String subnumfav = userPreferences.getString("SubNumFav", ""); 

     final String[] namesFavs = namesFav.split(";"); 
     final String[] locfavs= locfav.split(";"); 
     final String[] numfavs= numfav.split(";"); 
     final String[] subnumfavs = subnumfav.split(";"); 

     alert.setSingleChoiceItems(namesFavs, -1, new DialogInterface.OnClickListener() { 

      public void onClick(DialogInterface dialog, int item) { 
       pos = item; 

      } 
     }); 
     alert.setPositiveButton(lang_btn[2], new DialogInterface.OnClickListener() //"Visualizza" 
     { 
      public void onClick(DialogInterface dialog, int whichButton) 
      { 
       //if (SharedCode.isOnline(content)){ 
       if (pos == -1){ 
        Toast.makeText(content.getApplicationContext(), lang_error[2], Toast.LENGTH_LONG).show();//"Nessun preferito selezionato" 
       }else{ 
        if (namesFavs[pos] == ""){ 
         Toast.makeText(content.getApplicationContext(), lang_error[3], Toast.LENGTH_SHORT).show();//"Pagina inesistente" 

        }else{ 
         prova= locfavs[pos]; 
         SharedCode.loc = locfavs[pos].; 
         SharedCode.num = Short.parseShort(numfavs[pos]); 
         SharedCode.sub_num= Byte.parseByte(subnumfavs[pos]); 
//----------------------------------------------------------------------------------- 
         if (SharedCode.loc == "aertel"){//this is the if that doesn't work 
          IrelandTeletext.getPage(content); 
         } 
///////////////////////--------------------------------------------------------------- 
        } 


       } 
       pos = -1; 
      } 
     }); 
break; 
} 
AlertDialog MyAlert = alert.create(); 
    return MyAlert; 
} 

enter image description here

ответ

2

Вы не можете сравнивать строки как на Java. Вы должны использовать String.equals (...). Объяснение этому довольно простое. Оператор == проверяет, совпадают ли объекты. Эти строки представляют собой разные объекты с одинаковым значением.

+0

thk для объяснения человек, мне было интересно, почему == не работает – user1001635

+0

Я столкнулся с этой проблемой 2-3 месяца назад. Это было вроде привыкание, так как я пришел с фона C# –

4

Для сравнения Strings следует использовать yourString.equals(other) или yourString.equalsIgnoreCase(other) метод, а не ==.

Смежные вопросы