Java 检索微调器文本时出现Android NullPointerException
我正在尝试获取微调器的选定项,并将其转换为字符串,然后将其保存为Java 检索微调器文本时出现Android NullPointerException,java,android,Java,Android,我正在尝试获取微调器的选定项,并将其转换为字符串,然后将其保存为.txt文件,然后发送,在实现微调器之前一切正常,现在我在选择“否”时收到空指针异常,而在选择“是”时不会发生任何情况。Logcat中引用的行是在Updater()中执行的方法,而clickedUpdate是正在运行的Updater()方法。我100%确定Updater()方法中发生错误 Updater()方法 logcat Caused by: java.lang.NullPointerException
.txt
文件,然后发送,在实现微调器之前一切正常,现在我在选择“否”时收到空指针异常,而在选择“是”时不会发生任何情况。Logcat中引用的行是在Updater()
中执行的方法,而clickedUpdate
是正在运行的Updater()
方法。我100%确定Updater()方法中发生错误
Updater()方法
logcat
Caused by: java.lang.NullPointerException
at javax.mail.internet.MimeUtility.checkAscii(MimeUtility.java:1346)
at javax.mail.internet.MimeBodyPart.setText(MimeBodyPart.java:1069)
at javax.mail.internet.MimeMessage.setText(MimeMessage.java:1493)
at javax.mail.internet.MimeMessage.setText(MimeMessage.java:1477)
at com.example.adrian.trucktracker.Locator.createMessage(Locator.java:134)
at com.example.adrian.trucktracker.Locator.sendMail(Locator.java:170)
at com.example.adrian.trucktracker.Locator.Updater(Locator.java:256)
at com.example.adrian.trucktracker.Locator.clickedUpdate(Locator.java:264)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at android.view.View$1.onClick(View.java:3860)
at android.view.View.performClick(View.java:4480)
at android.view.View$PerformClick.run(View.java:18686)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5872)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
因此,在对其进行修复,使DATAOUT()不再返回null(通过将默认字符串值设置为
string DATAOUT=“”;
)之后,我得到了一系列由以下语句引起的错误:
while((!(temperature.equals(“”)和&temperature!=null)| | xxxxxxx choicei.equals(“No”))
{
发送邮件(“xxxxxxxxxxxxxxx@gmail.com“,”DataTest“,DATAOUT());
Update=“Updated”;
删除文件(“xxxxxxx_LOCATION_DATA.txt”);
}
这导致了无限循环,因此我修复了不再使用while的问题,但是有人知道如何在不导致我的应用程序崩溃的情况下包含while循环吗?您在
createMessage()
中崩溃,可能是因为DATAOUT()
返回null
。我们无法帮助您,因为我们没有这些方法的源代码。另外,请注意,您似乎正在主应用程序线程上执行磁盘I/O(最终是网络I/O)。这不仅对性能有害,而且当您最终尝试发送电子邮件时,您的网络I/O将因NetworkOnMainThreadException
而崩溃。为什么要用“xxxxxx”屏蔽所有内容?让一切都变得很混乱。我已经修复了它,这样DATAOUT()就不再返回null,但现在只要选择了其中一个选项,就不会出现代码异常@commonswarewe您在while循环中尝试做什么?在不知道这一点的情况下,我所能说的就是,一旦循环开始循环,就要退出循环。您需要更改条件中使用的一个变量的值(即温度或XXXXXXX CHOICEI)。另外,您的温度检查!=null
应在之前!(temperature.equals(“”)
或者,如果温度为null,则会出现null指针异常。但是,我将while子句重写为while(!“”.equals(temperature)| |“No”.equals(xxxxxxx choicei))
,因为这样您就不需要检查null了。@flightplanner在我的while循环中,我发送了一封电子邮件,然后删除了文件是的,但为什么要循环?为什么不使用if
语句?除非你想发送电子邮件,然后多次删除该文件,直到发生什么事情?@flightplanner更改循环的语法仍然会使其成为infiniteWell,当然,如果你不按照我第一次所说的更改循环中的温度值或xxxxxxx choicei值,它会成功。
Caused by: java.lang.NullPointerException
at javax.mail.internet.MimeUtility.checkAscii(MimeUtility.java:1346)
at javax.mail.internet.MimeBodyPart.setText(MimeBodyPart.java:1069)
at javax.mail.internet.MimeMessage.setText(MimeMessage.java:1493)
at javax.mail.internet.MimeMessage.setText(MimeMessage.java:1477)
at com.example.adrian.trucktracker.Locator.createMessage(Locator.java:134)
at com.example.adrian.trucktracker.Locator.sendMail(Locator.java:170)
at com.example.adrian.trucktracker.Locator.Updater(Locator.java:256)
at com.example.adrian.trucktracker.Locator.clickedUpdate(Locator.java:264)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at android.view.View$1.onClick(View.java:3860)
at android.view.View.performClick(View.java:4480)
at android.view.View$PerformClick.run(View.java:18686)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5872)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)