1

只有当第二个 EditText 小部件获得焦点、第二个小部件不为空且第一个小部件不为空时,我才尝试使用来自第一个 EditText 小部件的文本填充第二个 EditText 小部件的文本。

我有以下 OnFocusChangeListener 处理程序代码。

        public void onFocusChange(View v, boolean hasFocus) {

        EditText stxt = (EditText) findViewById(R.id.numberone);
        EditText etxt = (EditText) findViewById(R.id.numbertwo);


        if (hasFocus && stxt.getText().toString().trim() != "" && etxt.getText ().toString().trim() == "")
        {
            etxt.setText(stxt.getText().toString().trim());
        }
    }

当我运行它并单击第二个小部件时,它不会填充。当我删除第三个约束('etxt.getText ().toString().trim() == ""'))它工作。所以第二个 EditText 小部件上的 getText() 正在返回一些东西,即使第二个小部件除了通过提示属性显示的文本之外没有初始值。

我怎样才能做到这一点。

谢谢

4

2 回答 2

2

您应该使用 进行对象比较String.equals(),而不仅仅是x == "".

我会使用 Android 的方便TextUtils类重写它:

String one = stxt.getText().toString();
String two = etxt.getText().toString();

if (hasFocus && TextUtils.getTrimmedLength(one) != 0 
      && TextUtils.getTrimmedLength(two) == 0) {
    etxt.setText(one);
}
于 2010-01-06T15:07:41.550 回答
1

永远不要将 Java 中的字符串与==or进行比较!=。使用equals(). 试试看,看看你是否能得到更好的结果。

于 2010-01-06T15:06:29.153 回答