了解内容提供商中的一些概念

时间:2012-12-19 12:29:48

标签: android android-intent android-contentprovider

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

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;      

1 个答案:

答案 0 :(得分:0)

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

  

假设您查询了uri内容:// [Authority] / foo / bar   getPathsegments将返回一个包含foo和bar的列表(不是   授权)

2)get(1)的值是什么?

  

因此,对于上述情况,get(1)将在列表中给出第二项,即   杆

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

  

删除功能签名是

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

因此,如果where字符串不为null,则附加条件   db delete操作。