如果其他条件不适用于按钮,请单击 Android

If else condition not working on button click in Android

如果我在点击调用另一个 Activity 时不使用任何条件,那么它可以工作,但是当我使用某些条件时,它没有响应,既不调用 if 部分也不调用 [=13] =]:

btnUpload.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // uploading the file to server                     
            try {
                strGetName = pref.getString("key_name", null);
                strGetEmail = pref.getString("key_email", null);

                if (strGetEmail.equals("")&&strGetName.equals("")) {
                    Toast.makeText(UploadActivity.this, "Please create your account first", Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(UploadActivity.this, BasicActivity.class);
                    startActivity(intent);
                }
                else {
                    new UploadFileToServer().execute();
                }

            } catch (Exception e) {
                // TODO: handle exception
            }
        }
   });

您收到 NullPointerException,因为您的字符串很可能为空。检查您是否在 SharedPref 中写入值,然后 读取它。

此外,如果您还不想在本地存储中写入值,您应该将字符串的默认值设置为 pref.getString("key_name","") 或确保 strGetEmail!=null在检查 equals().

之前

if..else 部分不起作用,因为 if 语句中有一个 NullpointerException。您可能在 null 值上调用 .equals

改变这个

strGetName = pref.getString("key_name", null);
strGetEmail = pref.getString("key_email", null);

进入这个

strGetName = pref.getString("key_name", "");
strGetEmail = pref.getString("key_email", "");

或像这样更改您的 if 代码,

 if (strGetEmail == null || strGetName== null) {
      ....
  }

if条件中&&和strGetName.equals("")之间应该有space。

 if (strGetEmail.equals("") && strGetName.equals("")) 

并改变

strGetName = pref.getString("key_name", null);
strGetEmail = pref.getString("key_email", null);

strGetName = pref.getString("key_name", "");
strGetEmail = pref.getString("key_email", "");

你只需替换这段代码

strGetName = pref.getString("key_name", null); strGetEmail = pref.getString("key_email", null);

用这段代码

strGetName = pref.getString("key_name", ""); strGetEmail = pref.getString("key_email", "");

您总是得到您作为默认值给出的空值。 按照这个改:

strGetName = pref.getString("key_name", "");
strGetEmail = pref.getString("key_email", "");