2011-10-30 42 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();