【问题标题】:Null Pointer Exception When Checking If SharedPrefs Equals Null检查 SharedPrefs 是否等于 Null 时出现空指针异常
【发布时间】:2016-03-20 16:06:36
【问题描述】:

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

我在 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;
    }
}

感谢任何帮助!

【问题讨论】:

标签: android nullpointerexception sharedpreferences


【解决方案1】:

这段代码是错误的 - 你不能在空对象上调用 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)){ 
...

【讨论】:

  • 谢谢!我会相应地修改,如果我有任何问题,我会告诉你。
  • 不客气!如果你完成了 - 标记为已解决。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-28
  • 1970-01-01
  • 2015-07-15
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多