Gui*_*ido 14 android android-contentprovider
我有一个自定义ContentProvider,用于将从GPS获取的修复程序存储到SQLite数据库中.此类重写ContentProvider方法(删除,插入,查询...),但请注意我还包含一个查询上一个修复的方法.
public class FixesContentProvider extends ContentProvider {
@Override
public int delete(...) { ... }
...
@Override
public Cursor query(...) { ... }
public Cursor getLastFix(Uri uri) { ... }
}
Run Code Online (Sandbox Code Playgroud)
通过调用查询来自其他服务或活动的数据非常容易getContentResolver().
ContentResolver cR = getContentResolver();
Cursor fixes = cR.query(CONTENT_URI, ...);
Run Code Online (Sandbox Code Playgroud)
但是我无法调用我的自定义方法(FixesContentProvider#getLastFix). 我怎样才能调用ContentProvider中定义的自定义方法?
也许我不明白ContentProviders/ContentResolvers在这种情况下是如何工作的,但Google提供的官方Android文档在这个意义上并不是很清楚.
Cri*_*ian 13
但是我无法调用我的自定义方法(
FixesContentProvider#getLastFix).
这完全正确.但在这种情况下,您可以利用一个事实:both query和getLastFixmethods都返回一个Cursor对象.所以,我所做的就是为你传递给你的URI添加一些值query,然后决定你想要实际做什么:query或者getLastFix.例如:
public Cursor query(Uri uri,...) {
if ( uri says it has to return the last fix )
return getLastFix(uri);
// otherwise, do normal operations...
return cursor;
}
Run Code Online (Sandbox Code Playgroud)
事实上,该query方法假设返回一个结果,给定a Uri.因此,如果需要检索上一个修复,则必须在URI中指定要进行上一次修复.
| 归档时间: |
|
| 查看次数: |
5885 次 |
| 最近记录: |