私はAndroidの開発にはかなり新しく、テキストノートとチェックリスト機能を備えたメモ作成アプリを開発中です。しかし、現在私が混乱しているバグがあります。ユーザーがチェックリストに新しい項目を追加しようとすると、アプリが不要なメソッドにメソッドを転送するだけです。アンドロイドで間違ったコンテキストを取得する
私のコードで何が問題なのか分かりませんが、文脈に何かがあるかもしれません。したがって私はソースコードをここに入れて、うまくいけば誰かがそれを理解するかもしれない。 NoteContentProviderの挿入方法に
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;
}
、それルートの代わりに:ありがとうご支援
ここではreleventコードは、ユーザーが項目を追加]をクリックした後でChecklistContentProviderの1つ
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);
}
ここにあなたのlogcatが指摘するバグ
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)