我正在制作一个通过 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/