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