Я довольно новичок в разработке Android, и сейчас я создаю приложение для заметок с текстовой записью и функцией контрольного списка. Однако есть ошибка, с которой я в настоящее время запутался. Это происходит, когда пользователь пытается добавить новый элемент в контрольный список, и приложение просто направляет метод на нежелательный.Неправильный контекст в android
Я не знаю, что не так с моим кодом, может быть, что-то с контекстом. Поэтому я поставлю исходный код здесь, и, надеюсь, кто-то может это понять. Спасибо за вашу поддержку
Вот код Релевент после пользователь нажимает добавить пункт:
NoteEditorActivity
ChecklistManager.newInstance(NoteEditorActivity.this).create(item);
ChecklistManager
public long create(CheckItem item) {
ContentValues values = new ContentValues();
values.put(Constants.CL_COL_ID, item.getId());
//put some data
Uri result = clContext.getContentResolver().insert(ChecklistContentProvider.CONTENT_URI, values); //BUG: insert command points to notecontentprovider's one
long id = Long.parseLong(result.getLastPathSegment());
return id;
}
и его маршрут к методу вставки в NoteContentProvider вместо в контрольном спискеContentProvider
public Uri insert(Uri uri, ContentValues values) {
int type = URI_MATCHER.match(uri);
SQLiteDatabase db = dbHelper.getWritableDatabase();
Long id;
switch (type){
case NOTES:
id = db.insert(Constants.NOTES_TABLE, null, values);
break;
default:
throw new IllegalArgumentException("Unknown URI at notecontent: " + uri);
}
getContext().getContentResolver().notifyChange(uri, null);
return Uri.parse(BASE_PATH_NOTE + "/" + id);
}
Вот ошибка
java.lang.IllegalArgumentException: Unknown URI at notecontent: content://cmc.note.data.provider/checklist
at cmc.note.data.NoteContentProvider.insert(NoteContentProvider.java:88)
at android.content.ContentProvider$Transport.insert(ContentProvider.java)
at android.content.ContentResolver.insert(ContentResolver.java)
at cmc.note.data.ChecklistManager.create(ChecklistManager.java:43)
at cmc.note.activities.NoteEditorActivity$1.onClick(NoteEditorActivity.java:107)
at android.support.v7.app.AlertController$ButtonHandler.handleMessage(AlertController.java:157)
at android.os.Handler.dispatchMessage(Handler.java)
at android.os.Looper.loop(Looper.java)
at android.app.ActivityThread.main(ActivityThread.java)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:163)