如何在android studio中的应用程序(已创建)中制作笔记部分

8zzbczxx  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(295)

这可能很难解释,但我正在androidstudio中使用java进行一个项目。我不知道如何开始,是否使用sql或不,等等,我字面上只是想一个空白的“页面”的能力,能够键入和可能存储的“笔记”写在它?我试过教程,但他们是一个笔记应用程序作为一个整体,当我只想添加一个笔记部分?我做了一个可怕的想法,我的代码是下面,我已经尝试从一个教程!感谢您的帮助!
白板画在这里哈哈

<EditText
 android:layout_width="391dp"
 android:layout_height="523dp"
 android:hint="Type here..."
 android:gravity="top"
 android:id="@+id/EditText1"
 app:layout_constraintTop_toTopOf="parent"/>
//SAVING FILES BELOW
CS
public void Save(String fileName) {
    try {
        OutputStreamWriter out =
            new OutputStreamWriter(openFileOutput(fileName, 0));
        out.write(EditText1.);
        out.close();
        Toast.makeText(this, "Note Saved!", Toast.LENGTH_SHORT).show();
    } catch (Throwable t) {
        Toast.makeText(this, "Exception: " + t.toString(), Toast.LENGTH_LONG).show();
    }
}

//LOADING FILES CODE BELOW
public boolean FileExists(String fname){
  File file = getBaseContext().getFileStreamPath(fname);
  return file.exists();
}

//MAIN CODE BELOW
//YOU CAN CHANGE - COULDN'T MAKE JUST ONE SECTION
public class MainActivity extends AppCompatActivity {
    EditText EditText1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Save("Note1.txt");
            }
        });

        EditText1 = (EditText) findViewById(R.id.EditText1);
        EditText1.setText(Open("Note1.txt"));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    public void Save(String fileName) {
        try {
            OutputStreamWriter out =
                new OutputStreamWriter(openFileOutput(fileName, 0));
            out.write(EditText1.getText().toString());
            out.close();
            Toast.makeText(this, "Note saved!", Toast.LENGTH_SHORT).show();
        } catch (Throwable t) {
            Toast.makeText(this, "Exception: " + t.toString(), Toast.LENGTH_LONG).show();
        }
    }

    public String Open(String fileName) {
        String content = "";
        if (FileExists(fileName)) {
            try {
                InputStream in = openFileInput(fileName);
                if ( in != null) {
                    InputStreamReader tmp = new InputStreamReader( in );
                    BufferedReader reader = new BufferedReader(tmp);
                    String str;
                    StringBuilder buf = new StringBuilder();
                    while ((str = reader.readLine()) != null) {
                        buf.append(str + "\n");
                    } in .close();
                    content = buf.toString();
                }
            } catch (java.io.FileNotFoundException e) {} catch (Throwable t) {
                Toast.makeText(this, "Exception: " + t.toString(), Toast.LENGTH_LONG).show();
            }
        }
        return content;
    }

    public boolean FileExists(String fname) {
        File file = getBaseContext().getFileStreamPath(fname);
        return file.exists();
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}
ztigrdn8

ztigrdn81#

根据要存储的数据类型,可能需要使用其他方法。本文详细概述了您拥有的所有数据和文件存储选项。
我猜您可能想存储大数据,因此我认为在您的情况下,最合适和最佳的选择是使用room local perstistence库。
由于您提到了是否使用sql,正如前面提到的文档中所述,room提供了以下好处
sql查询的编译时验证。
方便的注解,最大限度地减少重复和容易出错的样板代码。
优化了数据库迁移路径。
因此,建议您使用roomlibrary,而不是直接使用sqliteapi。

相关问题