2013-05-20 2 views
1

Я очень стараюсь создать экземпляр. Он работает, когда я не выполняю свой код после первого вызова функции onCreate. Logcat бросает мне массу бесполезных ошибок (по крайней мере, для меня). Вот код, который я звонюИсключение для Android при вызове нового действия

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 

(я упорно пытался на форматирование) Таким образом, любые идеи, что я делаю неправильно?

+1

Что входит в строку 36 «ShowNote.java»? – jaibatrik

+0

Ваш метод getText() 'возвращает значение null. – Neoh

+0

Вы объявили вызываемую активность в файле манифеста? – Zakaria

ответ

2

Что-то в вас код является нулевым, когда вы пытаетесь его использовать, что я вызываю nullPointerException. У меня есть две догадки;

Либо вы не зовете setContentView пока после того как вы объявили о своей TextView, который даст вам исключение нулевого указателя

Или вы работаете в IOException, и ваша строка остается пустой. Это кажется маловероятным для меня, потому что я считаю, что если вы используете setText(null), вывод просто null.

+0

Yup, это простой старый, отказавшийся принять участие. Я должен был сделать еще один чек. Мне пришлось добавить конец в первый блок catch, а если terminate = 1, не выполняйте второй цикл. – user2402569

+0

@ user2402569 - Рад слышать, как вы решили свою проблему. Если вы считаете, что решение стоило ответа, вы можете добавить свой собственный ответ и через несколько дней принять, если, чтобы отметить этот вопрос как решаемый и (возможно) помочь будущим посетителям. Принятие ответа также дает вам приятный 2 репа (и значок для первого, который я считаю) – jcw

0

У вас есть NullPointerException в вашем методе «GetText()» в строке 36.

Ваша инициализация объекта FileInputStream вероятно терпит неудачу, поэтому он бросает FileNotFoundException. Поэтому ваш объект FileIputStream 'fip' по-прежнему «null».

Поместите весь код в одном Ьгу блоке, как это:

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 
    } 
1

Я решил его! Если у кого-то есть одна и та же проблема, вы можете добавить логическое значение в первое место try/catch (если есть ошибка, не найденная в файле, не пытайтесь ее прочитать). Не знаю, почему это так меня взяло чтобы выяснить)

+0

+1 Для прослушивания моего совета;) – jcw

Смежные вопросы