【发布时间】:2019-04-21 11:56:09
【问题描述】:
我有一个默认值为“其他城市”的城市微调器。如果用户找不到他的城市,当他选择其他城市时,会显示一个文本输入(您的城市)。 当用户在那里输入他的城市名称并单击按钮注册时,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));
}
}
【问题讨论】:
-
所以第一个输出有“我的城市”,但在评估时它是空白的?
-
当我在表单中输入“我的城市”作为文本输入并单击注册按钮后,该按钮是我在 Logcat 中显示的输出以进行检查。
-
我不确定我是否正确地将您的描述与该代码相一致,但看起来
userCity.equals(cities[0])从来都不是真的,尽管您似乎期望它是正确的。 -
刚刚更新了问题。你能看看吗?
-
您的 userCity 变量是关闭的。 userCity 为 null(或空字符串),因此如果永远不会为真,则执行 if/else 评估。检查你设置 userCity 的方式,这就是搞砸了。
标签: android android-edittext android-textinputedittext