保存用户输入(如注释)的方法(Android Studio/Java 编程)?

Posted

技术标签:

【中文标题】保存用户输入(如注释)的方法(Android Studio/Java 编程)?【英文标题】:Methods for saving user input like notes (Android Studio/Java programming)? 【发布时间】:2019-10-03 12:44:03 【问题描述】:

我开始编写用于记笔记的应用程序,例如 Evernote 或预装的基本备忘录应用程序,以便我可以学习和练习编码。

目前我将用户输入保存在一个 .txt 文件中,这样每个笔记在存储中都会有一个自己的文本文件,其中包含笔记内容。 将用户输入保存在存储中的其他方法是什么(您不需要解释它,关键字是合适的),这样做的优点或缺点是什么?像我现在正在做的那样保存文本文件有什么缺点?

【问题讨论】:

您可以将它们保存在 sqlite 数据库中。优点:您可以轻松搜索它们。缺点:? 您可以在这里查看所有可能的选项:developer.android.com/guide/topics/data/data-storage 谢谢,但我的问题更多是关于如何保存用户输入,而不是在哪里。我可以在内部存储上保存笔记,但是还有什么其他方法可以保存字符串而不是将它们写入 .txt 文件? 请发送详细信息。你如何从用户那里得到输入?你使用 EditText 吗?如果没有,你用什么来收集用户的数据? 是的,我目前使用的是 EditText,然后是 FileOutputStream 【参考方案1】:
    将内容保存到应用缓存中的文件 如果内容是纯文本(且不太长),您可以轻松使用SharedPreferences 保存内容 您可以使用数据库

请注意,如果内容是富文本,您可以对其进行格式化(例如,使用 HTML、JSON 或 XML 并将文件(如图像)保存在指定文件夹中,并将文件的位置写入格式化的text) 然后保存到数据库中。

有用的入门链接:

使用数据库:

https://developer.android.com/training/data-storage/sqlite https://developer.android.com/training/data-storage/room https://www.tutorialspoint.com/android/android_sqlite_database.htm

富文本编辑器:

https://github.com/chinalwb/Android-Rich-text-Editor https://github.com/wasabeef/richeditor-android

如何获取缓存目录?

File cacheDir = this.getCacheDir();

File cacheDir = this.getApplicationContext().getCacheDir();

请注意,如果内容很重要,您可以在存储中创建一个新文件夹(如“我的应用名称文件”)并将内容保存到该文件夹​​中。


如果您使用的是 EditText:

我将 EditText 命名为 uinput。我们开始:

private void saveContent() 
    String content = uinput.getText().toString();
    String name = "Note 1"; // You can create a new EditText for getting name
    // Using SharedPreferences (the simple way)
    SharedPreferences sp = this.getApplicationContext().getSharedPreferences("notes", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sp.edit();
    editor.putString(name, content);
    editor.apply();


private Map<String, ?> getAllNotes() 
    SharedPreferences sp = this.getApplicationContext().getSharedPreferences("notes", Context.MODE_PRIVATE);
    return sp.getAll();


private String getNoteContent(String noteName) 
    SharedPreferences sp = this.getApplicationContext().getSharedPreferences("notes", Context.MODE_PRIVATE);
    return sp.getString(noteName, "Default Value (If not exists)");

不要在SharedPreferences "notes"中保存其他东西。

【讨论】:

感谢您的详细回答。所以这只适用于纯文本,因为只保存字符串?如果我想在笔记中添加多种功能,例如粗体文本、图像、复选框和一般文本格式,您会建议哪种方法来保存内容? 也许有一些库可以编辑,并将富文本保存到文件中,但您可以手动使用 span 并使用 html、JSON 或 XML 格式化它们。 JSON 示例(自定义格式,不基于标准): "name":"Note 1","content":[ "blocktype":"text", "content":"A simple text","blocktype":"text","style":"bold","content":"And a bold text" ] 要添加图像,您可以使用"blocktype":"img","imgid":"img14.png","extraParamsForImage_LikeSize":"blah blah" 并将所有图像保存到特定文件夹,然后加载这张图片,使用那个文件夹和imgid参数(\storage\PathToTheImages\img14.png 如果您还没有阅读,请查看developer.android.com/guide/topics/text/spans。 Spans很好,还有ImageSpan。查看 developer.android.com/reference/android/text/style/… 部分 Classes 以查看可用的最多跨度。 如果您不知道JSON,请阅读en.wikipedia.org/wiki/JSON 非常非常简单,易于学习和使用。它几乎可以在最著名的语言中使用,如 Java、php 和... 如何在 Android 中使用 JSON:***.com/questions/2591098/how-to-parse-json-in-java

以上是关于保存用户输入(如注释)的方法(Android Studio/Java 编程)?的主要内容,如果未能解决你的问题,请参考以下文章

Python语法特点如注释规则代码缩进编码规范等

linux shell命令向文件内特定的行插入数据,如注释等

Java&Android代码规范

Android Studio:保存和检索用户输入数据的最佳方法

安装和使用JD-Eclipse插件

从与.jar文件位于同一文件夹的文件中读取