getActivity() 相当于this 或者 Activity.this,是获取当前Activity的实例,生命周期随当前的Activity销毁而销毁;
getContext() 获取当前congtext的实例(如果使用场景是Activity则相当于 this, 如果使用场景是一个Server 那么获取的实例就是一个ApplicationContext())
不明觉厉,要多学学了
1、确认是否写入了数据库,可以通过命令行看
2、数据写入数据库了,没有显示出来(也是我遇到的问题),原因是SmsProvider中的query写错了,正确的应该是:
@Nullable @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { int match = matcher.match(uri); switch (match) { case SMS_ALL: break; case SMS_ONE: long id = ContentUris.parseId(uri); selection = "_id=?"; selectionArgs = new String[]{String.valueOf(id)}; break; default: throw new RSIllegalArgumentException("Wrong URI:" + uri); } mDb = mHelper.getReadableDatabase(); Cursor cursor = mDb.query(SendedMsg.TABLE_NAME, projection, selection, selectionArgs, null, null, sortOrder); cursor.setNotificationUri(getContext().getContentResolver(), URI_SMS_ALL); //cursor.close(); return cursor; }
注意最后两行代码
ContentProvider的Uri,通过自定义的SmsProvider获取Cursor
你是不是没有设置SmsHistoryFragment的适配器,在setupListAdapter();方法后调用setListAdapter(mCursorAdapter); 就行了