2011-10-30 66 views
0

好吧,我的耐心已經消失了...我嘗試了30分鐘,使這個簡單的事情工作,但我失敗瞭如此糟糕。也許是因爲我直接用android開始,沒有Java ...我研究了C++之前,在C++中,這是那麼容易的事......比較按鈕文本

我有一個XML文件按鈕:

<Button android:text="Button" 
    android:layout_width="wrap_content" 
    android:id="@+id/button1" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_marginBottom="108dp"> 
    </Button> 

在我的java文件我有一個這樣的字符串:

String test = new String(); 
    test = "google"; 

我已經設置了onclick監聽器按鈕,所以沒有問題。 我的問題是,如果:

Button buttonx = (Button)findViewById(R.id.button1); 

我怎樣才能比較,如果的onClick(的onclick代碼已經制造)buttonx的文本=字符串測試是「谷歌」。

我的getText,試過的setText ...但沒有...

回答

2

確定。首先要做的是:String在Java和C++中完全不同。事實上,對象是全面的不同。

String test = new String(); 
test = "google"; 

不符合您的想法。

這是做什麼創建一個新的空String對象並存儲在test中的引用。下一行存儲對test中的常量字符串「google」的引用,並使您在上一行中構建的空String符合垃圾回收的條件。這與C++完全不同,其中第二行實際上會調用String類中的=運算符。您可以將Java中的所有東西都看作指針(但不是真的),因此Java中的賦值就像C++中的指針賦值(但不是真的)。

回到你的問題。

像這樣的東西可能會奏效:

String test = "google"; 
Button b = ...; 
if (test.equals(b.getText()) { 
    // whatever 
} 

請記住,雖然Java和C++分享一些語法相似之處,但卻真的完全不同的語言。 Java引用有點像指針,但不是真的。

真的。

1
String test = new String(); 
test = "google"; 

Button buttonx = (Button)findViewById(R.id.button1); 
if (test.equals(buttonx.getText())) { 
    // it's equal 
} 
0
if (button.getText().toString().equalsIgnoreCase(test)) 
    Toast.makeText(this, "Button text equals!", Toast.LENGTH_SHORT).show(); 
else 
    Toast.makeText(this, "Button text is not the same.", Toast.LENGTH_SHORT).show();