我正在尝试通过读取文件在EditText中设置文本,但每次都会关闭应用程序。有人能说出这段代码有什么问题吗?
package com.example;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.content.Intent;
import android.view.View;
import android.widget.*;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class EditNoteActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
String FILENAME = "note_file";
EditText text = (EditText) findViewById(R.id.editText1);
byte[] buffer = new byte[100];
super.onCreate(savedInstanceState);
setContentView(R.layout.editnote);
//Intent intent = getIntent();
FileInputStream fos = null;
try {
fos = openFileInput(FILENAME);
} catch (FileNotFoundException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
assert fos != null;
try {
fos.read(buffer, 0, 10);
String str = buffer.toString();
text.setTextSize(48);
text.setText(str);
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
public void onClickSave(View theButton) {
//Intent intent = new Intent(this, MyActivity.class);
//startActivity(intent);
String FILENAME = "note_file";
EditText text = (EditText) findViewById(R.id.editText1);
FileOutputStream fos = null;
try {
fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
} catch (FileNotFoundException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
assert fos != null;
try {
fos.write(text.getText().toString().getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
finish();
}
public void onClickBack(View theButton) {
//Intent intent = new Intent(this, MyActivity.class);
//startActivity(intent);
finish();
}
}
我尝试编辑它以删除不相关的代码,但我收到错误,“您的帖子没有太多的上下文来解释代码部分;请更清楚地解释您的方案。”不幸的是,这个问题已经得到了解决。
答案 0 :(得分:0)
您在设置内容视图之前正在初始化EditText(文本),因此在按ID查找编辑文本时EditText对象为null,这就是应用程序崩溃的原因。
修改您的代码,如下所示
super.onCreate(savedInstanceState);
setContentView(R.layout.editnote);
String FILENAME = "note_file";
EditText text = (EditText) findViewById(R.id.editText1);
byte[] buffer = new byte[100];
仅供参考:在提问时,也会发布错误日志,然后才能获得快速正确的答案。
<强>更新强>
答案 1 :(得分:0)
用于将字节数组转换为字符串 byte [] bytes = {...} String str = new String(bytes,“UTF8”); //用于UTF8编码
这就是问题所在。