【发布时间】:2016-12-21 11:47:10
【问题描述】:
我正在尝试开发一个发送电子邮件的应用程序,实际上我刚开始学习java。
我在共享首选项中创建了字符串“email_address”和“pass”,以便用户可以更改它们。然后我尝试使用该数据发送电子邮件-->
//Creating a new session
session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
//Authenticating the password
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(sharedPrefs.getString("email_address", "a"), sharedPrefs.getString("pass", "a")); }
});
try { <...>
然后我得到了这个:
原因:java.lang.NullPointerException:尝试在空对象引用上调用接口方法“java.lang.String android.content.SharedPreferences.getString(java.lang.String, java.lang.String)”
Android Studio 将我指向这一行 -->
return new PasswordAuthentication(sharedPrefs.getString("email_address", "a"), sharedPrefs.getString("pass", "a")); }
如果我在该行中硬编码我的 gmail 和密码,它可以完美运行,但我需要一个选项来更改这些(以防用户无法从我的源代码构建此应用程序)。请帮忙,我已经花了 3 个小时浏览这个网站和 androiddevelopers。 :(
【问题讨论】:
-
您是否通过从
context获取sharedPrefs来初始化它? -
因为是学Java,所以一定要知道什么是空指针以及如何解决:stackoverflow.com/questions/218384/…
-
正如@AndiGeeky 所说,您的
sharedPrefs变量未初始化。这就是问题所在。 -
我有这个公共类 SendMail extends AsyncTask
{ SharedPreferences sharedPrefs; -
@adalPaRi 我搜索了这个,似乎它必须在 onCreate 中初始化,但我在这个类中没有 oncreate。
标签: java android nullpointerexception sharedpreferences