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

我在 MainActivity 之后但在 onCreate 方法之前声明 customerEmailAddress String:

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 = "[email protected]";
private static final String RBPPASSWORD = "Redhawks123";
public String customerEmailAddress;

然后我有一个基于用户在应用程序中的响应操作的 OnClick() 方法。本质上,如果用户已经输入了他们的电子邮件地址,我会尝试在 onClick 之后允许某些 Activity 。如果他们没有输入他们的电子邮件地址,那么我会提示他们输入他们的电子邮件并将其保存到共享首选项。我使用基本的 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)){
...

关于android - 检查 SharedPrefs 是否等于 Null 时出现 Null 指针异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34279527/

10-10 17:08