2011-03-22 25 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 == "" 
相关问题