我有一个默认值为"其他城市"的城市微调器。如果用户找不到他的城市,则当他选择"其他城市"时,将显示文本输入(你的城市(。当用户在那里输入他的城市名称并单击按钮注册时,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: ()
编辑:-----------------------------在检查时,我发现用户城市返回的值为空。
这是获取用户城市值的代码。由于某些原因,它不起作用。
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));
}
}
您正在userCity
onItemSelected
中分配 EditText 的值。因此,如果用户选择"其他城市",则会将 EditText 值分配给侦听器中的userCity
,而不是 EditText 的值。
只需分配微调器值并使用 if 条件来设置 EditText 的可见性。
userCity = String.valueOf(parent.getItemAtPosition(position));
然后按下按钮时应该可以正常工作。