1

我正在努力创建一个实例。当我在初始调用 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

(我在格式化上很努力)那么,有什么想法我做错了什么吗?

4

3 回答 3

2

当您尝试使用它时,您的代码中的某些内容为空,这是导致nullPointerException. 我有两个猜测;

要么,setContentView直到您声明您的 之后,您才调用TextView,这会给您一个空指针异常

或者,您遇到了 IOException,并且您的字符串仍然为空。这对我来说似乎不太可能,因为我相信如果你使用setText(null)输出只是空的。

于 2013-05-20T17:20:14.757 回答
1

我解决了!如果有人遇到同样的问题,您应该在第一个 try/catch 位置添加一个布尔值(如果有文件未找到错误,请不要尝试从中读取。不知道为什么这让我如此很长时间才能弄清楚)

于 2013-05-20T17:59:09.653 回答
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
   }
于 2013-05-20T17:23:29.457 回答