提问者:小点点

即使输入了值,EditText也显示为空


我正在尝试使用电子邮件和密码验证用户。 我正在进行验证,但问题是,我正在使用改型库来发布数据,每当我在else中注释网络请求代码时,就会阻止其显示无错误坚果,每当我取消注释网络请求代码时,其显示错误toast消息输入密码,即使我输入了密码。

下面是我的代码:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    login = findViewById(R.id.login);
    email = findViewById(R.id.email);
    pwd = findViewById(R.id.pwd);

    login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            final ProgressDialog prg = new ProgressDialog(MainActivity.this);
            prg.setCancelable(false);
            prg.setMessage("Logging in...");
            prg.show();

            String str1 = email.getText().toString();
            String str2 = pwd.getText().toString();

            if(str1.equals("")){

                prg.dismiss();
                TastyToast.makeText(getApplicationContext(),"Enter email",TastyToast.LENGTH_SHORT,
                        TastyToast.ERROR).show();
            }
            else if(str2.equals("")){

                prg.dismiss();
                TastyToast.makeText(getApplicationContext(),"Enter password",TastyToast.LENGTH_SHORT,
                        TastyToast.ERROR).show();
            }
            else{

                Toast.makeText(getApplicationContext(),"Hello",Toast.LENGTH_SHORT).show();
                Retrofit retrofit = RetrofitClient.getInstance();
                ApiService apiService = retrofit.create(ApiService.class);

                apiService.getResponse(str1,str2).subscribeOn(Schedulers.io())
                        .subscribe(new Observer<LoginResponse>() {
                            @Override
                            public void onSubscribe(Disposable d) {

                            }

                            @Override
                            public void onNext(final LoginResponse value) {

                                if(value.equals("Success")){

                                    prg.dismiss();

                                }

                                runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {

                                        TastyToast.makeText(getApplicationContext(),"response:" +value,TastyToast.LENGTH_SHORT,
                                                TastyToast.ERROR).show();
                                    }
                                });
                            }

                            @Override
                            public void onError(Throwable e) {

                                prg.dismiss();

                                runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {
                                        TastyToast.makeText(getApplicationContext(),"Enter password",TastyToast.LENGTH_SHORT,
                                                TastyToast.ERROR).show();
                                    }
                                });
                            }

                            @Override
                            public void onComplete() {

                            }
                        });
                 }
            });
         }
    

我做错了什么?


共1个答案

匿名用户

str1.equals("")

如果str1(字符串)对象等于字符串obj=“”,则返回布尔结果,在这种情况下,最好使用

if(str1.isEmpty())

如果str1为空或不为空,则返回此值。