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)