|
|
|
@ -1,83 +0,0 @@
|
|
|
|
|
//创建新笔记
|
|
|
|
|
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!");//表明这段代码可能是一个框架或库中的临时实现,在真正的代码中会有对应的实际逻辑
|
|
|
|
|
}
|