一周前,我使用了这行代码:
buttonAction.setText("Retry");
buttonAction.getText().equals("Retry") -> true
今天,当我重新编译我的项目时(在SDK + android studio更新之后),我得到:
buttonAction.setText("Retry"); //called in BroadcastReceiver
buttonAction.getText().equals("Retry") -> false //called in onClick
buttonAction.getText().toString().equals("Retry") -> true //called in onClick
因为getText()
返回String
,这两个函数应该返回相同的,或者我错了?
修改
如果我在onCreate
方法中调用以下行,
buttonAction.setText("Retry");
System.out.println(buttonAction.getText().equals("Retry"));
System.out.println(buttonAction.getText().getClass().toString());
System.out.println(buttonAction.getText().toString().equals("Retry"));
他们打印:
07-08 17:13:12.898 10343-10343/at.test I/System.out﹕ true
07-08 17:13:12.898 10343-10343/at.test I/System.out﹕ class java.lang.String
07-08 17:13:12.898 10343-10343/at.test I/System.out﹕ true
如果我在onClick_ButtonAction
中调用这些行,则会打印出来:
07-08 17:18:34.913 10480-10480/at.test I/System.out﹕ false
07-08 17:18:34.913 10480-10480/at.test I/System.out﹕ class android.text.SpannableString
07-08 17:18:34.913 10480-10480/at.test I/System.out﹕ true
提前致谢!
答案 0 :(得分:0)
根据http://developer.android.com/reference/android/widget/EditText.html,getText()返回一个可编辑的类型。这就是为什么它返回false并且你必须将它转换为String才能使它成为真。