newUri.getPathSegments().get(1)

本文深入探讨了newUri.getPathSegments().get(1)在Android应用程序中的使用方式,解释了如何通过getContentResolver().insert(uri,values)插入数据,并从返回的Uri中获取新插入数据的ID。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

newUri.getPathSegments().get(1)

get(1)中的1的含义是把Uri中以 / 作为分割,0部分是路径,1部分则是id。

例如:增加数据操作

 

 ContentValues values = new ContentValues();
 values.put("WordStrings",strings);
 values.put("frequency",1);
 Uri newUri = getContentResolver().insert(uri,values);
 Log.d("newUriList",newUri.toString());
 newID = newUri.getPathSegments().get(1).toString();
 Log.d("newID",newID);

 控制台输出:

D/newUriList: content://com.example.administrator.recyclerviewtest.provider/Word/29
D/newID: 29

 

package com.example.datarestore; import android.content.ContentProvider; import android.content.ContentValues; import android.content.UriMatcher; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.net.Uri; public class DatabaseProvider extends ContentProvider { public static final int BOOK_ANY = 0; public static final int BOOK_ITEM = 1; private MyDatabaseHelper myDatabaseHelper; private static UriMatcher uriMatcher; static { uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); uriMatcher.addURI("com.example.datarestore.provider","Book",BOOK_ANY); uriMatcher.addURI("com.example.datarestore.provider","Book/#",BOOK_ITEM); } public DatabaseProvider() { } @Override public int delete(Uri uri, String selection, String[] selectionArgs) { SQLiteDatabase db = myDatabaseHelper.getWritableDatabase(); int deleteRow = 0; if(uriMatcher.match(uri) == BOOK_ANY){ deleteRow = db.delete("Book",selection,selectionArgs); } else if (uriMatcher.match(uri) == BOOK_ITEM) { String Id = uri.getPathSegments().get(1); deleteRow = db.delete("Book","id = ?",new String[]{Id}); } return deleteRow; } @Override public String getType(Uri uri) { SQLiteDatabase db = myDatabaseHelper.getWritableDatabase(); String type = ""; if(uriMatcher.match(uri) == BOOK_ANY){ type = "vnd.android.cursor.dir/vnd.com.example.datarestore.provider.Book"; } else if (uriMatcher.match(uri) == BOOK_ITEM) { String Id = uri.getPathSegments().get(1); type = "vnd.android.cursor.item/vnd.com.example.datarestore.provider.Book"; } return type; } @Override public Uri insert(Uri uri, ContentValues values) { SQLiteDatabase db = myDatabaseHelper.getWritableDatabase(); long newId = db.insert("Book",null,values); Uri returnuri = Uri.parse("content://com.example.datarestore.provider/Book/"+newId); return returnuri; } @Override public boolean onCreate() { myDatabaseHelper = new MyDatabaseHelper(getContext(),"Bookstore.db",null,1); return true; } @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { SQLiteDatabase db = myDatabaseHelper.getWritableDatabase(); Cursor cursor = null; if(uriMatcher.match(uri) == BOOK_ANY){ cursor = db.query("Book",projection,selection,selectionArgs,null,null,sortOrder); } else if (uriMatcher.match(uri) == BOOK_ITEM) { String Id = uri.getPathSegments().get(1); cursor = db.query("Book",projection,"id = ?",new String []{Id},null,null,sortOrder); } return cursor; } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { SQLiteDatabase db = myDatabaseHelper.getWritableDatabase(); int updateRow = 0; if(uriMatcher.match(uri) == BOOK_ANY){ updateRow = db.update("Book",values,selection,selectionArgs); } else if (uriMatcher.match(uri) == BOOK_ITEM) { String Id = uri.getPathSegments().get(1); updateRow = db.update("Book",values,"id = ?",new String[]{Id}); } return updateRow; } }为什么初始化数据库没创建,其他程序显示找不到这个uri
最新发布
07-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值