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

如果其他条件不适用于按钮,请在Android中单击,android,if-statement,button,android-activity,Android,If Statement,Button,Android Activity,如果我在单击调用另一个活动时未使用任何条件,则它会工作,但当我使用某些条件时,则它不会响应,既不会调用If部分,也不会调用else: btnUpload.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // uploading the file to server

如果我在单击调用另一个活动时未使用任何条件,则它会工作,但当我使用某些条件时,则它不会响应,既不会调用
If
部分,也不会调用
else

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,因为您的字符串很可能为null。在读取之前,检查您是否正在SharedRef中写入值


此外,如果您还不想在本地存储中写入值,则应将字符串的默认值设置为
pref.getString(“key_name”,”)
,或者确保
strGetEmail=在检查
equals()
之前,null
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 (strGetEmail == null || strGetName== null) {
      ....
  }

if条件中&&和strgename.equals(“”)之间应该有空格

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

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


您只需替换这段代码

strGetName=pref.getString(“key\u name”,null);
strGetEmail=pref.getString(“key_email”,null)

用这段代码

strgename=pref.getString(“key_name”,”);

strGetEmail=pref.getString(“key_email”,”)

您总是得到作为默认值提供的空值。 根据以下内容进行更改:

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

它没有响应,既不调用if节也不调用else
意味着执行了
catch
块,使用
e.printStackTrace()
检查异常您给出的默认值为null,但用“”检查它。这是一个错误的检查在catch块中检查它,将出现nullponterexception
strGetName = pref.getString("key_name", "");
strGetEmail = pref.getString("key_email", "");