Android 检查SharedPrefs是否等于Null时出现Null指针异常

Android 检查SharedPrefs是否等于Null时出现Null指针异常,android,nullpointerexception,sharedpreferences,Android,Nullpointerexception,Sharedpreferences,我正在制作一个Android应用程序,通过displayEmailCaptureFragment()方法捕获用户的电子邮件。如果我已经捕获了用户的电子邮件,我不想提示用户再次输入他们的电子邮件 我在MainActivity之后、onCreate方法之前声明customerEmailAddress字符串: public class MainActivity extends FragmentActivity implements View.OnClickListener, BillingProces

我正在制作一个Android应用程序,通过displayEmailCaptureFragment()方法捕获用户的电子邮件。如果我已经捕获了用户的电子邮件,我不想提示用户再次输入他们的电子邮件

我在MainActivity之后、onCreate方法之前声明customerEmailAddress字符串:

public class MainActivity extends FragmentActivity implements View.OnClickListener, BillingProcessor.IBillingHandler,
    EmailCapturedListener {

private MyPagerAdapter pageAdapter;
private Button mDownloadResumeButton;
private ImageButton mRightArrow, mLeftArrow;
private static final String EMAILKEY = "email_key";
public static final String EDITSKU = "professional_editing_service_1499";
public static final String EMAILSKU = "resume_template_pro_99";
private static final String RBPEMAIL = "rbproeditor@gmail.com";
private static final String RBPPASSWORD = "Redhawks123";
public String customerEmailAddress;
然后,我有一个基于应用程序中用户响应操作的OnClick()方法。本质上,如果用户已经输入了他们的电子邮件地址,我会尝试在onClick之后允许某些活动。如果他们没有输入电子邮件地址,我会提示他们输入电子邮件并将其保存到共享首选项。我使用一个基本的if-else语句,但是我仍然生成一个空指针异常,即使我分配了customerEmailAddress字符串:

@Override
public void onClick(View v) {

    int currentPosition = pager.getCurrentItem();
    switch (v.getId()) {
        case R.id.right_arrow:
            pager.setCurrentItem(currentPosition + 1);
            break;
        case R.id.left_arrow:
            pager.setCurrentItem(currentPosition - 1);
            break;
        case R.id.download_resume_button:
                customerEmailAddress = mPrefs.getString(EMAILKEY, null);
            if (customerEmailAddress.equals(null)){
                displayEmailCaptureFragment();
            }
            else {
                showPurchaseDialog();
        }
            break;
    }
}

感谢您的帮助

这段代码是错误的-不能对空对象调用equals(…)或任何其他方法

...
customerEmailAddress = mPrefs.getString(EMAILKEY, null);
if (customerEmailAddress.equals(null)){
...
改为这样做:

customerEmailAddress = mPrefs.getString(EMAILKEY, null);
if (customerEmailAddress == null){ 
...
或者使用TextUtils:

customerEmailAddress = mPrefs.getString(EMAILKEY, null);
if (TextUtils.isEmpty(customerEmailAddress)){ 
...

谢谢如果我有问题,我会相应地修改,并让您知道。欢迎您!如果你完成了-标记为已解决。感谢可能的重复我不相信这是重复的,因为这个例子特别涉及从SharedPrefs调用项目。