1

我无法理解以下代码中的某些概念:

1) 为什么我们使用.arg0.getPathSegments().get(1)?

2) get(1) 的值是多少?

3) (!TextUtils.isEmpty(arg1) 的功能是什么?" AND (" + arg1 + ')' : ""), arg2);

public int delete(Uri arg0, String arg1, String[] arg2) {
  int count=0;
  switch (uriMatcher.match(arg0)){
     case BOOKS:
        count = booksDB.delete(
           DATABASE_TABLE,
           arg1, 
           arg2);
        break;
     case BOOK_ID:
        String id = arg0.getPathSegments().get(1);
        count = booksDB.delete(
           DATABASE_TABLE,                        
           _ID + " = " + id + 
           (!TextUtils.isEmpty(arg1) ? " AND (" + 
           arg1 + ')' : ""), 
           arg2);
        break;
     default: throw new IllegalArgumentException(
        "Unknown URI " + arg0);    
  }       
  getContext().getContentResolver().notifyChange(arg0, null);
  return count;      
4

1 回答 1

0

1) 为什么我们使用.arg0.getPathSegments().get(1)?

假设您使用 uri content://[Authority]/foo/bar 查询 getPathsegments 将返回一个带有 foo 和 bar 的列表(不是权限)

2) get(1) 的值是多少?

因此,对于上述情况,get(1) 将为您提供列表中的第二项,即 bar

3) (!TextUtils.isEmpty(arg1) 的功能是什么?" AND (" + arg1 + ')' : ""), arg2);

删除函数签名是

   public int delete(Uri url, String where, String[] whereArgs)

因此,如果wherestring 不为 null,则将条件附加到 db delete 操作中。

于 2012-12-19T12:57:14.480 回答