2013-08-27 1 views
-2

Я написал код следующим образом, но не могу понять, почему код возвращает исключение нулевого указателя?cant понять исключение Null указателя в приложении android

public void createXML() 
{ 
    try 
    { 
     //FileOutputStream f1 = new FileOutputStream("Userdata_Boombastic.xml"); 
     FileOutputStream f1 = openFileOutput("Userdata_Boombastic.xml", Context.MODE_PRIVATE); 
     //OutputStreamWriter out = new OutputStreamWriter(f1); 
     XmlSerializer xmlSerializer = Xml.newSerializer();    
     StringWriter writer = new StringWriter(); 
     xmlSerializer.setOutput(writer); 
     xmlSerializer.startDocument("UTF-8",true); 
     xmlSerializer.endDocument(); 
     xmlSerializer.flush(); 
     String dataWrite=writer.toString(); 
     f1.write(dataWrite.getBytes()); 
     f1.close(); 
    } 
    /*catch (FileNotFoundException e) 
    { 
    // TODO Auto-generated catch block 
     Log.e("FileNotFoundException", e.toString()); 
     e.printStackTrace(); 
    }*/ 
    catch (IllegalArgumentException e) 
    { 
    // TODO Auto-generated catch block 
     Log.e("~~IllegalArgumentException~~", e.toString()); 
     e.printStackTrace(); 
    } 
    catch (IllegalStateException e) 
    { 
    // TODO Auto-generated catch block 
     Log.e("~~IllegalStateException~~", e.toString()); 
     e.printStackTrace(); 
    } 
    /*catch (IOException e) 
    { 
    // TODO Auto-generated catch block 
     Log.e("IOEXCEPTION", e.toString()); 
     e.printStackTrace(); 
    }*/ 
    catch (Exception e) 
    { 
    // TODO Auto-generated catch block 
     Log.e("~~Exception~~", e.toString()); 
     e.printStackTrace(); 
    } 

08-27 18:50:50.310: E/~~Exception~~(31487): java.lang.NullPointerException 
08-27 18:50:57.800: E/~~Exception~~(31487): java.lang.NullPointerException 
08-27 18:51:00.430: E/~~Exception~~(31487): java.lang.NullPointerException 
08-27 18:53:28.050: E/ExternalAccountType(30234): Unsupported attribute readOnly 
08-27 18:53:29.680: E/ExternalAccountType(30234): Unsupported attribute readOnly 
08-27 18:53:32.500: E/~~Exception~~(32054): java.lang.NullPointerException 
08-27 18:53:51.670: E/~~Exception~~(32054): java.lang.NullPointerException 

Среднее время как для другого объяснения Я бегу этот код на свою камеру, подключив его к ПК.

Пожалуйста, помогите

Ну StackTrace ничего Fruitfull не вернулся я думаю,

08-27 19:30:31.330: E/ExternalAccountType(30234): Unsupported attribute readOnly 
08-27 19:30:31.820: E/ExternalAccountType(30234): Unsupported attribute readOnly 
08-27 19:30:36.030: E/~~Exception~~(2732): java.lang.NullPointerException 
08-27 19:30:36.150: E/->>(2732): ~~stacktrace~~ 
08-27 19:30:36.150: E/->>(2732): java.lang.NullPointerException 
08-27 19:30:36.150: E/->>(2732): at   android.content.ContextWrapper.openFileOutput(ContextWrapper.java:165) 
08-27 19:30:36.150: E/->>(2732): at com.example.boombastic.WritingXML.createXML(WritingXML.java:76) 
08-27 19:30:36.150: E/->>(2732): at com.example.boombastic.BoombasticPlayer.onCreate(BoombasticPlayer.java:22) 
08-27 19:30:36.150: E/->>(2732): at android.app.Activity.performCreate(Activity.java:4470) 
08-27 19:30:36.150: E/->>(2732): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
08-27 19:30:36.150: E/->>(2732): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
08-27 19:30:36.150: E/->>(2732): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
08-27 19:30:36.150: E/->>(2732): at android.app.ActivityThread.access$600(ActivityThread.java:123) 
08-27 19:30:36.150: E/->>(2732): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
08-27 19:30:36.150: E/->>(2732): at android.os.Handler.dispatchMessage(Handler.java:99) 
08-27 19:30:36.150: E/->>(2732): at android.os.Looper.loop(Looper.java:137) 
08-27 19:30:36.150: E/->>(2732): at android.app.ActivityThread.main(ActivityThread.java:4424) 
08-27 19:30:36.150: E/->>(2732): at java.lang.reflect.Method.invokeNative(Native Method) 
08-27 19:30:36.150: E/->>(2732): at java.lang.reflect.Method.invoke(Method.java:511) 
08-27 19:30:36.150: E/->>(2732): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817) 
08-27 19:30:36.150: E/->>(2732): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584) 
08-27 19:30:36.150: E/->>(2732): at dalvik.system.NativeStart.main(Native Method) 
+0

что это было голосование вниз для? Без каких-либо ответов – user2714061

+1

Можете ли вы показать трассировку стека? – krsteeve

+0

Можете ли вы показать полный класс 'WritingXML'? Я предполагаю, что он расширяет 'Activity' или' Context' и не инициализируется должным образом, так как он не запускался системой. – Henry

ответ

0

StackTrace полезно, конечно, это.

Ваш код разбивается на линии 76 WritingXML.java (com.example.boombastic.WritingXML.createXML (WritingXML.java:76)), когда вы звоните openFileOutput(). вопрос в том, почему вы получаете исключение NullPointerException при openFileOutput()? Может эта нить может вам помочь: NullPointerException at openFileOutput in Activity.

Кроме того, рекомендуется закрыть FileOutputStream (и любой поток) в блоке finally {}, чтобы убедиться, что вы закрыли его, если есть какие-либо исключения после его открытия.

0

линия 76 является ошибка в этом методе:

FileOutputStream f1 = openFileOutput("Userdata_Boombastic.xml", Context.MODE_PRIVATE); 

Я предполагаю, что этот класс расширяет деятельность таким образом, вам не нужно ссылаться на метод с контекстом.

Если вы посмотрите на трассировку стека, то это означает, что контекстная оболочка имеет значение NULL, поэтому вы можете вызвать этот метод без контекста, даже если ваш код компилируется. То, что я предложил бы делать это, если вы звоните этот метод из другого класса, вы передаете в контексте в качестве параметра и вызвать метод openFileOutput через:

FileOutputStream f1 = ctx.openFileOutput("Userdata_Boombastic.xml", Context.MODE_PRIVATE); 
+0

Да, он расширяет Сервис, чтобы использовать OpenFileOutput. – user2714061

+0

Вы предлагаете мне создать объект службы, а затем называть его – user2714061

+0

Ну, можете ли вы рассказать об этом немного больше, потому что я попытался вызвать метод объектом класса сервиса, но ничто не изменило его, все еще давая исключение nullpointerexception. – user2714061