簡體   English   中英

檢索Spinner文本時,Android NullPointerException

[英]Android NullPointerException When retriving Spinner text

我正在嘗試獲取微調器的選定項並將其轉換為字符串,然后將其保存為.txt文件,然后發送,一切正常,直到實現了微調器,現在選擇時出現了空指針異常否,當我選擇“是”時,什么也不會發生。 在logcat中引用的線是在被excecuted方法Updater()並且clickedUpdate是所述Updater()方法是run.I'm 100%確定在更新程序()方法中發生錯誤。

Updater()方法

public String Updater()
{
    Vibrator vibrate = (Vibrator) this.getSystemService(Context.VIBRATOR_SERVICE);
    TextView dLong = (TextView) findViewById(R.id.textLong);
    TextView dLat = (TextView) findViewById(R.id.textLat);
    EditText xxxxxx = (EditText)findViewById(R.id.POinput);
    EditText xxxxxx = (EditText)findViewById(R.id.splitPOinput);
    Spinner xxxxxchoice = (Spinner) findViewById(R.id.optionselecti);
    String xxxxxx = xxxxxx.getText().toString();
    String dataLat = dLat.getText().toString();
    String dataLong = dLong.getText().toString();
    String xxxxxx = xxxxxx.getText().toString();
    String Update = null;
    TelephonyManager telephonemanager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
    String PhoneNumber = telephonemanager.getLine1Number();
    String xxxxxxChoicei = xxxxxxchoice.getSelectedItem().toString();
    int choice = 0;
    boolean Choice;
    if(xxxxxxChoicei.equals("Yes"))
    {
        choice = 1;//virtual number used to indicate spinner choice on data server
        Choice = true; //for if statment below
        vibrate.vibrate(100);
    }
    else if (xxxxxxChoicei.equals("No"))
    {
        choice = 0;
        Choice = false;
    }
    AlertDialog.Builder alert = new AlertDialog.Builder(this);
    alert.setTitle("Temperature");
    alert.setMessage("Input Temperature");
    final EditText input = new EditText(this);
    input.setInputType(InputType.TYPE_NUMBER_FLAG_SIGNED);
    alert.setView(input);

    alert.setPositiveButton("Check-In", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            temperature = input.getText().toString();
        }
    });
    if(Choice = false)
    {
        alert.show();
    }
    if(xxxxxxxxxChoicei.equals("No"))
    {
        temperature = "DRY";
    }
    String DataIn = PhoneNumber + "," + dataLong + "," + dataLat+","+dataPO+","+splitpo+","+temperature+","+choice;
    try {
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(new
                File(getFilesDir() + File.separator + "xxxxxxx_LOCATION_DATA.txt")));
        bufferedWriter.write(DataIn);
        bufferedWriter.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    DATAOUT();
    while((!(temperature.equals(""))&& temperature!=null) || xxxxxxxChoicei.equals("No"))
    {
     sendMail("xxxxxxxxxxxxxxx@gmail.com", "DataTest", DATAOUT());
      Update = "Updated";
      deleteFile("xxxxxxx_LOCATION_DATA.txt");
    }

日志貓

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) || xxxxxxxChoicei.equals("No")) { sendMail("xxxxxxxxxxxxxxx@gmail.com", "DataTest", DATAOUT()); Update = "Updated"; deleteFile("xxxxxxx_LOCATION_DATA.txt"); }

這導致了無限循環,所以我通過不再使用while來解決了這一問題,但是有人知道如何包括while循環而不會導致我的應用程序崩潰嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM