编写一个记事本应用程序
时间: 2023-09-05 09:11:19 浏览: 90
好的,以下是一个简单的记事本应用程序的实现步骤:
1. 创建一个新的Android项目并添加必要的依赖项。
2. 在布局文件中创建一个EditText元素,以便用户可以输入文本。
3. 在MainActivity中获取EditText元素的引用,并设置一个监听器以响应用户输入。
4. 在监听器中,您可以使用SharedPreferences API将用户输入保存在设备上。
5. 添加一个菜单选项,以便用户可以打开和保存文本文件。您可以使用FileChooser API来让用户选择要打开和保存的文件。
6. 在菜单选项的响应函数中,您可以使用File API来读取和写入文件。
7. 最后,您可以在应用程序中添加其他功能,例如搜索、替换和撤销/重做等。
下面是一个简单的代码示例:
```
public class MainActivity extends AppCompatActivity {
private EditText mEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mEditText = findViewById(R.id.editText);
// 设置EditText的监听器
mEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// 在文本改变之前执行的代码
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// 在文本改变时执行的代码
}
@Override
public void afterTextChanged(Editable s) {
// 在文本改变之后执行的代码
saveText(s.toString());
}
});
}
// 保存用户输入
private void saveText(String text) {
SharedPreferences prefs = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("text", text);
editor.apply();
}
// 读取保存的用户输入
private String loadText() {
SharedPreferences prefs = getPreferences(Context.MODE_PRIVATE);
return prefs.getString("text", "");
}
// 创建菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
// 处理菜单选项的点击
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_open:
// 打开文件
openFile();
return true;
case R.id.action_save:
// 保存文件
saveFile();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
// 打开文件
private void openFile() {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
startActivityForResult(intent, 1);
}
// 保存文件
private void saveFile() {
Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_TITLE, "note.txt");
startActivityForResult(intent, 2);
}
// 处理文件选择器的结果
@Override
public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
if (resultCode == Activity.RESULT_OK) {
Uri uri = null;
if (resultData != null) {
uri = resultData.getData();
}
if (requestCode == 1) {
// 读取文件
readFile(uri);
} else if (requestCode == 2) {
// 写入文件
writeFile(uri);
}
}
}
// 读取文件
private void readFile(Uri uri) {
try {
InputStream inputStream = getContentResolver().openInputStream(uri);
BufferedReader reader = new BufferedReader(new InputStreamReader(
inputStream));
String line;
StringBuilder text = new StringBuilder();
while ((line = reader.readLine()) != null) {
text.append(line);
text.append('\n');
}
mEditText.setText(text.toString());
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
// 写入文件
private void writeFile(Uri uri) {
try {
OutputStream outputStream = getContentResolver().openOutputStream(uri);
outputStream.write(mEditText.getText().toString().getBytes());
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
这只是一个简单的示例,您可以根据您的需求进行更改和扩展。
阅读全文