2011-03-22 28 views
0

所以我寫的表單有兩個字段,一個主體和一個標題。如果這些字段不包含數據以防止用戶將其保存到數據庫中,我希望獲得表單以拋出Toast消息。代碼應該做三件事之一。第一個是我正在努力完成的。第二種情況是,如果ID意圖爲空,它將創建一個新條目,並且如果ID意圖包含內容,則它將使用新內容更新數據庫條目。我遇到的問題是當表單字段爲空時,它仍然保存。這似乎完全跳過我的第一次IF聲明,我似乎無法弄清楚爲什麼。我試過對第一個IF語句同時使用null和「」,分別和一起使用。幫幫我?Android - 如何阻止表單保存null到我的數據庫

submitBtn.setOnClickListener(new OnClickListener(){ 
      public void onClick(View v) { 
       String titleInsert = titleEdit.getText().toString(); 
       String bodyInsert = bodyEdit.getText().toString(); 
       String dateTimeValue = dateTimeTextView.getText().toString(); 
       if ((titleInsert == null || titleInsert == "") || (bodyInsert == null || bodyInsert == "")){ 
        Context context = getApplicationContext(); 
        CharSequence text = "Please make sure the Title and Body are both filled before saving"; 
        int duration = Toast.LENGTH_SHORT; 

        Toast toast = Toast.makeText(context, text, duration); 
        toast.show(); 
       }else if(intentRowId == null){ 
        try{ 
        mDb.open(); 
        mDb.createNote(Integer.parseInt(mIntentId), titleInsert, bodyInsert, dateTimeValue); 
        finish(); 
        } catch (Exception e) { 
        e.printStackTrace(); 
        } 
       } else { 
        try{ 
         mDb.open(); 
         mDb.updateNote(longRowId, titleInsert, bodyInsert); 
         finish(); 
        } catch (Exception e){ 
         e.printStackTrace(); 
         Context context = getApplicationContext(); 
         CharSequence text = "SQL Exception Thrown: " + e; 
         int duration = Toast.LENGTH_SHORT; 
         Toast toast = Toast.makeText(context, text, duration); 
         toast.show(); 
        } 
       } 
       } 
     }); 
+0

你肯定titleInsert其實空進入第一if語句是什麼時候?我一直在掙扎,但我的錯誤是在調用者的一個類型轉換錯誤。 – apesa 2011-03-22 16:33:22

回答

0

嘗試titleInsert.equals("")

此外,你可能想打電話給titleInsert = titleInsert.trim();,如果它不爲空,爲了趕空字符串像" "

編輯:如果您可以使用Apache commons lang,則可以使用StringUtils類,該類有isBlank()方法,如果字符串爲空,空或只包含空格,則返回true。

EDIT2:在titleInsert.equals("")

簡短說明:==通常會檢查相同的對象,而不是平等datawise。因此titleInsert""不一定是相同的對象,但可能相等(空字符串)。請注意,在處理(非空)對象時,幾乎在每種情況下都應該使用equals,除非您明確知道需要==(除了檢查obj == null外,很少見)。

短的例子:new Long(1) == 1L有可能產生虛假的,因爲new Long(1)創建到用於文字1L長物體不同的物體(使用1 L同時,注意,我沒有排除自動(UN)拳擊) 。另一方面,new Long(1).equals(1L)將產生真實。

+0

使用.equals像魅力一樣工作。我試過.isBlank(),但我的應用似乎並沒有認識到它是一種方法。不知道它只是沒有內置到Android或我做錯了什麼。對這一切仍然陌生,所以非常感謝你! – 2011-03-23 14:03:27

+0

正如我所說的,'isBlank()'是StringUtils類的一個方法,它是Apache Commons Lang庫的一部分。您需要添加該庫才能使用該方法。 – Thomas 2011-03-23 14:05:54

0

嘗試:

titleInsert.equals("") 

"".equals(titleInsert) 

代替

titleInsert == "" 
相關問題