diff --git a/src/创建笔记.java b/src/创建笔记.java new file mode 100644 index 0000000..93f1d9e --- /dev/null +++ b/src/创建笔记.java @@ -0,0 +1,83 @@ + //创建新笔记 + private void createNewNote() { + //调用了saveNote()方法来保存当前正在编辑的笔记 + saveNote(); + + //通过finish()方法结束当前的活动。 + finish(); + Intent intent = new Intent(this, NoteEditActivity.class); + //创建了一个新的Intent对象,用于启动NoteEditActivity + intent.setAction(Intent.ACTION_INSERT_OR_EDIT); + //设置了ACTION_INSERT_OR_EDIT动作以告知NoteEditActivity是要插入新笔记还是编辑已有笔记 + intent.putExtra(Notes.INTENT_EXTRA_FOLDER_ID, mWorkingNote.getFolderId()); + //通过putExtra()方法传递了Notes.INTENT_EXTRA_FOLDER_ID键和mWorkingNote.getFolderId()值,用于确定新笔记所属的文件夹。 + startActivity(intent); + //通过startActivity()方法启动了新的NoteEditActivity + } + + + //保存笔记 + public synchronized boolean saveNote() {//使用synchronized关键字进行了同步,以确保在多线程环境下对该方法的安全调用。 + if (isWorthSaving()) {//首先调用isWorthSaving()方法来检查当前笔记是否值得保存 + if (!existInDatabase()) {//如果值得保存,接着会调用existInDatabase()方法来检查当前笔记是否已经存在于数据库中 + if ((mNoteId = Note.getNewNoteId(mContext, mFolderId)) == 0) {//如果不存在,会调用Note.getNewNoteId()方法来获取一个新的笔记ID,并进行相应的处理 + Log.e(TAG, "Create new note fail with id:" + mNoteId); + return false; + } + } + + mNote.syncNote(mContext, mNoteId);//然后调用mNote.syncNote(mContext, mNoteId)方法来同步笔记内容到数据库中。 + + /** + * 检查是否存在任何关联于该笔记的小部件(widget) + */ + if (mWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID + && mWidgetType != Notes.TYPE_WIDGET_INVALIDE + && mNoteSettingStatusListener != null) { + mNoteSettingStatusListener.onWidgetChanged();//如果存在,则会调用mNoteSettingStatusListener.onWidgetChanged()方法来更新小部件的内容。 + } + return true; + } else { + return false; + } + } + + //判断笔记是否值得保存 + public boolean isWorthSaving() { + /** + * 判断了mMetaInfo是否不为null,如果满足条件,则表示笔记元信息不为null,因此认为值得保存。 + * 其次,使用了条件逻辑运算符||,判断了如果getName()返回的名称不为null并且去除两端空格后长度大于0,或者getNotes()返回的笔记内容不为null并且去除两端空格后长度大于0,则认为值得保存。 + * 综合这些条件,只要满足其中任意一个条件(或者多个条件),即认为笔记是值得保存的,方法返回true,否则返回false + */ + return mMetaInfo != null || (getName() != null && getName().trim().length() > 0) + || (getNotes() != null && getNotes().trim().length() > 0); + //综合考虑了笔记的元信息、名称和内容等判断信息 + } + + //检查当前笔记是否存在于数据库中 + public boolean existInDatabase() { + /** + * 判断了笔记的ID(mNoteId)是否大于0,若满足条件,则返回true,表示笔记在数据库中已存在;否则返回false,表示笔记在数据库中不存在。 + * 数据库中的ID是从1开始递增的,所以只有当mNoteId大于0时,才能说明该笔记已经存在于数据库中 + */ + + return mNoteId > 0; + } + + //获取FolderId(文件夹ID) + public long getFolderId() { + return mFolderId;//返回了成员变量mFolderId的值,这是一个长整型(long)的数据类型。 + } + + public static final String INTENT_EXTRA_FOLDER_ID = "net.micode.notes.folder_id"; + /** + * 用于在Activity之间传递数据时作为Intent的extra数据的键值。通过使用常量来声明键值,可以确保在不同的地方使用相同的key,避免因为拼写错误而导致的bug。 + * 常量名称为INTENT_EXTRA_FOLDER_ID,类型为String,值为"net.micode.notes.folder_id"。 + */ + + + @NonNull//@NonNull 和 @Nullable 注解指定了 name 不可为空,而 value 可以为空。 + //在 Intent 中添加额外数据,通过将一个名为 name 的参数与一个长整型数组 value 相关联,并将其添加到 Intent 中 + public Intent putExtra(String name, @Nullable long[] value) { + throw new RuntimeException("Stub!");//表明这段代码可能是一个框架或库中的临时实现,在真正的代码中会有对应的实际逻辑 + } \ No newline at end of file