我正在努力创建一个实例。在初始调用onCreate函数后我不执行代码时,它可以工作。 Logcat给我带来了大量无用的错误(至少对我来说)。这是我正在调用的代码
String note=null;
FileInputStream fip=null;
try{
fip=new FileInputStream(this.getFilesDir()+"/currentNote");
}
catch(FileNotFoundException e){
//The first and probably last time this is useful
note="";
}
try {
while(fip.available()>0){
byte current=(byte)fip.read();
note=note+String.valueOf(current);
}
}
catch (IOException e) {
//Just... no
}
TextView note_display=(TextView) findVewById(R.id.note_input);
note_display.setText(note);
这是logcat日志:
05-20 20:11:04.988: W/dalvikvm(20463): threadid=1: thread exiting with uncaught exception (group=0x410d9930)
05-20 20:11:05.008: E/AndroidRuntime(20463): FATAL EXCEPTION: main
05-20 20:11:05.008: E/AndroidRuntime(20463): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.buhala.notestaker/com.buhala.notestaker.ShowNote}: java.lang.NullPointerException
05-20 20:11:05.008: E/AndroidRuntime(20463): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)
05-20 20:11:05.008: E/AndroidRuntime(20463): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2357)
05-20 20:11:05.008: E/AndroidRuntime(20463): at android.app.ActivityThread.access$600(ActivityThread.java:153)
05-20 20:11:05.008: E/AndroidRuntime(20463): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
05-20 20:11:05.008: E/AndroidRuntime(20463): at android.os.Handler.dispatchMessage(Handler.java:99)
05-20 20:11:05.008: E/AndroidRuntime(20463): at android.os.Looper.loop(Looper.java:137)
05-20 20:11:05.008: E/AndroidRuntime(20463): at android.app.ActivityThread.main(ActivityThread.java:5226)
05-20 20:11:05.008: E/AndroidRuntime(20463): at java.lang.reflect.Method.invokeNative(Native Method)
05-20 20:11:05.008: E/AndroidRuntime(20463): at java.lang.reflect.Method.invoke(Method.java:511)
05-20 20:11:05.008: E/AndroidRuntime(20463): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
05-20 20:11:05.008: E/AndroidRuntime(20463): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
05-20 20:11:05.008: E/AndroidRuntime(20463): at dalvik.system.NativeStart.main(Native Method)
05-20 20:11:05.008: E/AndroidRuntime(20463): Caused by: java.lang.NullPointerException
05-20 20:11:05.008: E/AndroidRuntime(20463): at com.buhala.notestaker.ShowNote.getText(ShowNote.java:36)
05-20 20:11:05.008: E/AndroidRuntime(20463): at com.buhala.notestaker.ShowNote.onCreate(ShowNote.java:22)
05-20 20:11:05.008: E/AndroidRuntime(20463): at android.app.Activity.performCreate(Activity.java:5104)
05-20 20:11:05.008: E/AndroidRuntime(20463): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
05-20 20:11:05.008: E/AndroidRuntime(20463): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2261)
05-20 20:11:05.008: E/AndroidRuntime(20463): ... 11 more
(我在格式上努力了) 所以,任何想法我做错了什么?
答案 0 :(得分:2)
当您尝试使用它时,代码中的某些内容为null,这是导致nullPointerException
的原因。我有两个猜测;
要么,在你宣布你的setContentView
之后你才会调用TextView
,这会给你一个空指针异常
或者,您正在遇到IOException,并且您的字符串仍然为null。这似乎不太可能,因为我相信如果使用setText(null)
输出只是null。
答案 1 :(得分:1)
我解决了!如果有人遇到同样的问题,你可以在第一个try / catch位置添加一个布尔值(如果找不到文件错误,请不要尝试从中读取。不知道为什么会这样带我很想弄清楚)
答案 2 :(得分:0)
第36行的'getText()'方法有一个NullPointerException。
您初始化FileInputStream对象可能会失败,因此会抛出FileNotFoundException。因此,您的FileInputStream对象'fip'仍然是'null'。
将所有代码放在同一个try块中,如下所示:
try{
fip=new FileInputStream(this.getFilesDir()+"/currentNote");
note = "";
while(fip.available()>0){
byte current=(byte)fip.read();
note=note+String.valueOf(current);
}
}
catch(FileNotFoundException e){
//handle exception
}catch (IOException e) {
//handle exception
}