android - 检查 SharedPrefs 是否等于 Null 时出现空指针异常

标签 android nullpointerexception sharedpreferences

我正在制作一个 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 之后允许进行特定 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;
    }
}

感谢任何帮助!

最佳答案

此代码是错误的 - 您不能在 null 对象上调用 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 时出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34279527/

相关文章:

java - Android 的奇怪行为

android - ListView 不滚动。我如何解决它?

android - 如何使用 viewpager 内容创建垂直嵌套的 ScrollView

android - hideSoftInputFromWindow 出现空指针错误

android - 操作栏中的三点操作溢出菜单?

java - 在框架上绘图和 JLabel

java - 从 Selenium 中的配置属性文件读取值时出现空指针异常

android - SharedPreferences 访问是否耗时?

android - 如何在扩展 ArrayAdapter<String> 的类中获取共享首选项

java - Android 首选项错误, "String cannot be cast to int"