TextUtils.isEmpty(regUserOtherCity.getText()。toString())在按按钮时不起作用

时间:2019-04-21 11:56:09

标签: android android-edittext android-textinputedittext

我有一个城市微调器,其默认值为“其他城市”。如果用户找不到他的城市,则当他选择“其他城市”时,将显示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));
            }
        }

2 个答案:

答案 0 :(得分:0)

检查您的textInputEditText初始化是否正确。 也许您为TextINoutEditText设置了错误的ID

答案 1 :(得分:0)

您要为userCity内的onItemSelected分配EditText的值。因此,如果用户选择“其他城市”,则将EditText值分配给侦听器中的userCity,而不是EditText的值。

只需分配微调器值,并使用if条件设置EditText的可见性。

userCity = String.valueOf(parent.getItemAtPosition(position));

然后按一下按钮应该可以正常工作。