2015-08-12 2 views
1

Я использую флажок в действии, чтобы определить, какой список должен иметь добавленный к нему объект.CheckBox .isChecked() не обращается к коду

Intent i = getIntent(); 
String intentFlag = i.getStringExtra("flag"); 

if(listFlag.isChecked() && intentFlag == "main"){ 
    newProduct.put("shoppingList", true); 
    newProduct.put("mainList", true); 
} else if (listFlag.isChecked() && intentFlag == "shoppingList"){ 
    newProduct.put("mainList", true); 
    newProduct.put("shoppingList", true); 
} else if (!listFlag.isChecked() && intentFlag == "main"){ 
    newProduct.put("mainList", true); 
    newProduct.put("shoppingList", false); 
} else if (!listFlag.isChecked() && intentFlag == "shoppingList"){ 
    newProduct.put("mainList", false); 
    newProduct.put("shoppingList", true); 
} 

На данный момент, единственный intentFlag, который может быть возвращен из Intent является "main", однако, код в заявлении IF никогда не достигается. Глядя на Debug, он возвращается «main»

Я делаю что-то явно неправильно?

ответ

4

В Java вы должны сравнить строки, используя equals(), а не ==. Так оно и должно быть:

if(listFlag.isChecked() && intentFlag.equals("main")){ 
    .... 

или, чтобы избежать возможных NullPointerException, безопасный вид (в случае intentFlag является null) будет:

if(listFlag.isChecked() && "main".equals(intentFlag)){ 
    ... 
+0

Я такой идиот. Был долгий день. Спасибо за вашу помощь, ответит, когда это позволит мне – jmo