2010-04-25 26 views
1

我有一個對象變量Object test = Spinner.getSelectedItem(); - 它會從微調器(稱爲微調)所選擇的項目和名稱的項目「測試」在使用對象if語句...(安卓)

我想做與該物體如if語句:

'if (test = "hello") { 
//do something 
}' 

但它似乎沒有工作....

有人可以給我一些幫助嗎? - 我必須使用不同的if?或將對象轉換爲字符串等?

非常感謝......

詹姆斯

回答

7

聲明:

test = "hello" 

是字符串 「hello」 的可變測試的任務 - 它不會做一個比較。

test == "hello" 

是一個比較,但仍然可能無法正常工作,因爲它比較參考。碰巧是「hello」的兩個不同字符串實例可能不是同一個引用,因此該陳述可能是錯誤的。

嘗試:

"hello".equals(test) 
+0

好的,謝謝...... *現在就試試吧...... * – 2010-04-25 17:38:58

+0

那正是我所需要的,謝謝:) – 2010-04-25 17:42:49

5

如果要比較字符串,使用equals()方法

if ("hello".equals(test))... 
+0

.equals比較對象,而不是字符串。從Object 的java文檔布爾型\t equals(Object obj) 指示某個其他對象是否「等於」這一個。 它由String類繼承。 – 2010-04-25 17:42:05

+0

這正是我需要的感謝:) – 2010-04-25 17:42:17

+0

@湯姆:當然。我只是希望詹姆斯確保他將一個字符串與一個字符串進行比較(這取決於他的Spinner中的項目類型)。否則,他可能只會收到錯誤的值。 – 2010-04-25 19:18:27

0

製作測試一個字符串,並投getSelectedItem()的結果爲字符串

string test = (string)Spinner.getSelectedItem(); 
if (test == "hello") 
{ 
    //Do something 
} 
+0

我試過,出於某種原因,沒有工作=/ – 2010-04-25 17:43:39

0

在說test.equals(「你好」)時也是有效的我不'像另一種方式,它不符合我的編碼風格。

+0

但是你必須添加一個額外的空檢查。當沒有選擇任何東西時,AdapterView#getSelectedItem返回null。 – 2010-04-25 20:05:09

+0

我總是討厭這種推理。我更願意總是明確地處理空案例,以便清楚地表明我期望爲null,或者我不期望爲null,而不是運行意外丟失不應該邏輯發生的空值的風險。 – TofuBeer 2010-05-09 05:16:37