我正在尝试使用第一个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()返回一些东西,即使第二个小部件没有初始值,只有通过hint属性显示的文本。
我怎样才能做到这一点。
由于
答案 0 :(得分: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);
}
答案 1 :(得分:1)
永远不要将Java中的字符串与==
或!=
进行比较。使用equals()
。试试看,看看你是否会得到更好的结果。