2011-03-16 23 views
0

我需要从数据库表中删除一行,然后移动上面的以下行。这种方法是什么导致“逼近”?

public void updateDraftsAfterDelete(long rowId) 
{ 
     String txt="",rid="",sto="",est="",sin=""; 
     boolean b=true; 
     Cursor cursor = db.query(DATABASE_DRAFTS_TABLE, new String[] { 
       KEY_DRAFTS_ROWID, 
       KEY_DRAFTS_SENDTO, 
       KEY_DRAFTS_TXT, 
       KEY_DRAFTS_ENCST, 
       KEY_DRAFTS_SIN }, 
      null, null, null, null, null); 

    cursor.moveToPosition((int)(rowId+1)); 

    ContentValues values = new ContentValues(); 

    for(int i=(int)rowId;i<cursor.getCount();i++) 
    { 
     rid=new String(""+((Integer.parseInt(cursor.getString(0)))-1)); 
     sto=cursor.getString(1); 
     txt=cursor.getString(2); 
     est=cursor.getString(3); 
     sin=cursor.getString(4); 

    values.put(KEY_DRAFTS_SENDTO,sto); 
     values.put(KEY_DRAFTS_TXT,txt); 
     values.put(KEY_DRAFTS_ENCST, est); 
     values.put(KEY_DRAFTS_SIN, sin); 


     b=db.update(DATABASE_DRAFTS_TABLE, values, 
       KEY_DRAFTS_ROWID + "=" + rid, null) > 0; 

     cursor.moveToNext(); 
    } 
    cursor.moveToLast(); 

    rid=cursor.getString(0); 

    Toast.makeText(null, rid, Toast.LENGTH_LONG).show(); 

     b=db.delete(DATABASE_DRAFTS_TABLE, KEY_DRAFTS_ROWID + "=" + rid, null) >0; 
} 

在运行此,它正确地更换行,但不删除最后一行。 问题是什么? 谢谢。

回答

2

您需要将上下文对象传递给对Toast.makeText的调用,您不能传递null,这将抛出NullPointerException并强制关闭。

变化线

Toast.makeText(null, rid, Toast.LENGTH_LONG).show(); 

到:

Context context = getApplicationContext(); 
Toast.makeText(context, rid, Toast.LENGTH_LONG).show(); 
相关问题