调用新活动时的Android异常

时间:2013-05-20 17:13:21

标签: java android nullpointerexception android-activity

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

(我在格式上努力了) 所以,任何想法我做错了什么?

3 个答案:

答案 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
   }