Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在DatabaseHelper类中使用getContentResolver()_Android_Sqlite_Android Contentprovider_Android Contentresolver - Fatal编程技术网

Android 在DatabaseHelper类中使用getContentResolver()

Android 在DatabaseHelper类中使用getContentResolver(),android,sqlite,android-contentprovider,android-contentresolver,Android,Sqlite,Android Contentprovider,Android Contentresolver,在文章底部编辑 我刚开始在我的项目中使用ContentProviders,所以请原谅我的新手问题。此外,如果这是相关的,我使用教程作为参考 据我所知,我必须向我的ContentProvider报告任何CRUD操作,以便it将这些更改通知项目中的任何其他区域。但我的问题是我的CRUD操作都在我的DatabaseHelper.class中,还有我的查询等等。因此,当我尝试使用getContentResolver.CRUDuri、cv、null、null时,我在getContentResolver上得

在文章底部编辑

我刚开始在我的项目中使用ContentProviders,所以请原谅我的新手问题。此外,如果这是相关的,我使用教程作为参考

据我所知,我必须向我的ContentProvider报告任何CRUD操作,以便it将这些更改通知项目中的任何其他区域。但我的问题是我的CRUD操作都在我的DatabaseHelper.class中,还有我的查询等等。因此,当我尝试使用getContentResolver.CRUDuri、cv、null、null时,我在getContentResolver上得到了一个标记,带有消息cannotResolve方法

现在,当我查看ContentResolver时,我发现我只能在扩展Activity的类中使用它,但因为我的所有CRUD操作都保存在我的DatabaseHelper.class中,而DatabaseHelper.class扩展了SQLiteOpenHelper而不是Activity

如果有人能相应地指导初学者,我不知道该如何解决这个问题,我将不胜感激。下面是我在DatabaseHelper中的CRUD操作,如果还需要其他操作,请询问:

更新

删除

编辑

我正在尝试一些东西,但我不知道它是否能正常工作,因为我甚至不知道我是否正确地实现了ContentProvider。到目前为止,它删除了错误,但有人能确认这是否是我的问题的有效解决方案吗

我最初是这样调用CRUD方法的:dbHelper.AddAccountacc;但是因为我需要传递活动的上下文以允许getContextResolver,所以我修改了对dbHelper.AddAccountgetApplicationContext,acc的调用;并对积垢的操作进行了调整

    void AddAccount(Context con, Account acc) {


    SQLiteDatabase db = this.getWritableDatabase();


    ContentValues cv = new ContentValues();

    cv.put(colName, acc.getName());
    cv.put(colComp, acc.getComp());
    cv.put(colAmount, acc.getAmt());
    cv.put(colPurpose, acc.getPurpose());
    cv.put(colTerms, acc.getTerms());
    cv.put(colPeriod, acc.getPeriod());
    cv.put(colBalance, acc.getAmt());
    cv.put(colStatus, acc.getStatus());
    cv.put(colDate, acc.getDate());
    cv.put(colEditDate, acc.getEditDate());

    db.insert(ACCOUNTS, colName, cv);
    con.getContentResolver().insert(ContentProviderDB.CONTENT_URI, cv);
    db.close();
}
getContentResolver是android.content.Context类的方法,所以要调用它,您肯定需要一个Context活动或服务的实例

您需要传递类的上下文。有关更多详细信息,请参阅下面的链接


我在帖子中添加了一个关于传递活动上下文的编辑。您能否确认它是否是有效的解决方案?请尝试在上下文参数中传递YourActivityName.this。
    public int UpdateAcc(Account acc) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues cv = new ContentValues();
    cv.put(colName, acc.getName());
    cv.put(colComp, acc.getComp());
    cv.put(colAmount, acc.getAmt());
    cv.put(colPurpose, acc.getPurpose());
    cv.put(colTerms, acc.getTerms());
    cv.put(colPeriod, acc.getPeriod());
    cv.put(colEditDate, acc.getEditDate());
    cv.put(colStatus, acc.getStatus());
    Uri uri = Uri.parse(ContentProviderDB.CONTENT_URI + "/" + acc.getID());
    getContentResolver().update(uri, cv, null, null);
    return db.update(ACCOUNTS, cv, colID + "=?", new String[]{String.valueOf(acc.getID())});

}
    public void DeleteAcc(Account acc) {
    SQLiteDatabase db = this.getWritableDatabase();
    db.delete(ACCOUNTS, colID + "=?", new String[]{String.valueOf(acc.getID())});
    Uri uri = Uri.parse(ContentProviderDB.CONTENT_URI + "/" + acc.getID());
    getContentResolver().delete(uri, null, null);
    db.close();

}
    void AddAccount(Context con, Account acc) {


    SQLiteDatabase db = this.getWritableDatabase();


    ContentValues cv = new ContentValues();

    cv.put(colName, acc.getName());
    cv.put(colComp, acc.getComp());
    cv.put(colAmount, acc.getAmt());
    cv.put(colPurpose, acc.getPurpose());
    cv.put(colTerms, acc.getTerms());
    cv.put(colPeriod, acc.getPeriod());
    cv.put(colBalance, acc.getAmt());
    cv.put(colStatus, acc.getStatus());
    cv.put(colDate, acc.getDate());
    cv.put(colEditDate, acc.getEditDate());

    db.insert(ACCOUNTS, colName, cv);
    con.getContentResolver().insert(ContentProviderDB.CONTENT_URI, cv);
    db.close();
}