我有一个城市微调器,其默认值为“其他城市”。如果用户找不到他的城市,则当他选择“其他城市”时,将显示textInput(您的城市)。 当用户在此处输入城市名称并单击“注册”按钮时,getText()。toString()不会返回该值。而且,即使我编写了验证代码,当该字段为空时,它也不起作用。
Log.i("cities[0]", "("+cities[0]+")");
Log.i("regOtherCity", "("+(regUserOtherCity.getText().toString())+")");
if (userCity.equals(cities[0]) && TextUtils.isEmpty(regUserOtherCity.getText().toString()) )
{
error = true;
Log.i("checkerror", "("+cities[0]+")");
regUserOtherCity.setError("Enter Your City");
regUserOtherCity.requestFocus();
}
else if (userCity.equals(cities[0]))
userCity = regUserOtherCity.getText().toString();
Log.i("cities[0]", "("+cities[0]+")");
Log.i("regOtherCity", "("+userCity+")");
我尝试使用Logcat进行调试,当用户在文本输入中输入“我的城市”时,输出在此处。
I/cities[0]: (Other City)
I/regOtherCity: (my city)
I/cities[0]: (Other City)
I/regOtherCity: ()
编辑:----------------------------- 经过检查,我发现userCity返回的值为空。
这是获取userCity值的代码。由于某些原因,它无法正常工作。
regCitySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (String.valueOf(parent.getItemAtPosition(position)).equals(cities[0])) {
regOtherCityLayout.setVisibility(View.VISIBLE);
userCity = regUserOtherCity.getText().toString();
Log.i("onItemSel userCity", "("+userCity+")");
} else {
regOtherCityLayout.setVisibility(View.GONE);
userCity = String.valueOf(parent.getItemAtPosition(position));
}
}
答案 0 :(得分:0)
检查您的textInputEditText初始化是否正确。 也许您为TextINoutEditText设置了错误的ID
答案 1 :(得分:0)
您要为userCity
内的onItemSelected
分配EditText的值。因此,如果用户选择“其他城市”,则将EditText值分配给侦听器中的userCity
,而不是EditText的值。
只需分配微调器值,并使用if条件设置EditText的可见性。
userCity = String.valueOf(parent.getItemAtPosition(position));
然后按一下按钮应该可以正常工作。