2013-04-18 2 views
2

Я пытаюсь написать приложение-переводчик для Android и хочу прочитать txt-файл. Однако я всегда получаю исключение NullpointerException, пытаясь прочитать файл. я поставил текстовый файл в папке активов, но я думаю, что приложение не может найти :( Мой код:Android: NullPointerException при чтении txt-файла

(Это код моего класса VocabTrainer от линии 160: (vocsE, vocsG является LinkedLists и vocMapE, vocMapG являются HasMaps как области VocabTrainer))

try{ 
     AssetManager manager; 
     manager = currentContext.getAssets(); 
     InputStream input = manager.open("vocabs.txt"); 
     InputStreamReader inputReader = new InputStreamReader(input); 

     BufferedReader reader = new BufferedReader(inputReader); 
     String word = null; 

     while ((word = reader.readLine()) != null) { 
      //Splitts the given String when there is given " " 
      String[] wordSplit = word.split(" "); 

      vocsE.add(wordSplit[0]); 
      vocsG.add(wordSplit[1]); 

      vocMapE.put(wordSplit[0], wordSplit[1]); 
      vocMapG.put(wordSplit[1], wordSplit[0]); 
     } 
     reader.close(); 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 

А вот LogCat след:..

04-18 17:24:27.204: E/AndroidRuntime(1736): java.lang.RuntimeException: Unable to  
instantiate activity 
ComponentInfo{de.dbgeppelheim.dbgvocab/de.dbgeppelheim.dbgvocab.TrainingActivity}: 
java.lang.NullPointerException 
04-18 17:24:27.204: E/AndroidRuntime(1736):  at 
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106) 
04-18 17:24:27.204: E/AndroidRuntime(1736):  at 
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
04-18 17:24:27.204: E/AndroidRuntime(1736):  at 
android.app.ActivityThread.access$600(ActivityThread.java:141) 
04-18 17:24:27.204: E/AndroidRuntime(1736):  at  
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
04-18 17:24:27.204: E/AndroidRuntime(1736):  at 
android.os.Handler.dispatchMessage(Handler.java:99) 
04-18 17:24:27.204: E/AndroidRuntime(1736):  at 
android.os.Looper.loop(Looper.java:137) 
04-18 17:24:27.204: E/AndroidRuntime(1736):  at  
android.app.ActivityThread.main(ActivityThread.java:5039) 
04-18 17:24:27.204: E/AndroidRuntime(1736):  at 
java.lang.reflect.Method.invokeNative(Native Method) 
04-18 17:24:27.204: E/AndroidRuntime(1736):  at 
java.lang.reflect.Method.invoke(Method.java:511) 
04-18 17:24:27.204: E/AndroidRuntime(1736):  at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
04-18 17:24:27.204: E/AndroidRuntime(1736):  at 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
04-18 17:24:27.204: E/AndroidRuntime(1736):  at  
dalvik.system.NativeStart.main(Native Method) 
04-18 17:24:27.204: E/AndroidRuntime(1736): Caused by: java.lang.NullPointerException 
04-18 17:24:27.204: E/AndroidRuntime(1736):  at 
android.content.ContextWrapper.getResources(ContextWrapper.java:89) 
04-18 17:24:27.204: E/AndroidRuntime(1736):  at 
android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:78) 
04-18 17:24:27.204: E/AndroidRuntime(1736):  at 
de.dbgeppelheim.functionality.VocabTrainer.initialise(VocabTrainer.java:167) 
04-18 17:24:27.204: E/AndroidRuntime(1736):  at 
de.dbgeppelheim.functionality.VocabTrainer.<init>(VocabTrainer.java:40) 
04-18 17:24:27.204: E/AndroidRuntime(1736):  at 
de.dbgeppelheim.dbgvocab.TrainingActivity.<init>(TrainingActivity.java:25) 
04-18 17:24:27.204: E/AndroidRuntime(1736):  at 
java.lang.Class.newInstanceImpl(Native Method) 
04-18 17:24:27.204: E/AndroidRuntime(1736):  at 
java.lang.Class.newInstance(Class.java:1319) 
04-18 17:24:27.204: E/AndroidRuntime(1736):  at 
android.app.Instrumentation.newActivity(Instrumentation.java:1054) 
04-18 17:24:27.204: E/AndroidRuntime(1736):  at 
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097) 
04-18 17:24:27.204: E/AndroidRuntime(1736):  ... 11 more 
+1

Можно ли просмотреть файл, прежде чем пытаться его открыть? Возможно, проблема? –

+0

Файл находится в начале в папке с ресурсами, поэтому он должен существовать. Возможно, это проблема экспорта, когда приложение должно быть запущено с помощью эмулятора? – user2296122

+0

Опубликовать свою трассировку logcat – Pragnani

ответ

0

Этот вопрос объясняет, как делать то, что вы пытаетесь сделать. Следуйте этим шагам, затем возвращайтесь, если он все еще не работает.

Reading a simple text file

+1

Спасибо, но это именно то, как я пробовал:/ – user2296122

+0

Хорошо, тогда я постараюсь помочь. Где находится этот раздел кода? текущая работа? Текущий контекст необходим для доступа к текстовому файлу, и это доступно только в действии. Если этот код находится в файле библиотеки неактивности или что-то, что не расширяет Activity, тогда вам придется пройти контекст, когда вы вызываете его из действия. – NathanTempelman

+0

Да, это не в Activity, но я передаю его контрструктору другого класса, который использует его в качестве аргумента для метода (который должен читать файл). – user2296122

0

попробовать поставить его на папке Реза и перезапуске Если он все еще не работает, deb ug, если проблема вызвана ошибкой файла, не найденной.

+0

Просто попробовал его с папкой res, но он также не работает :( – user2296122

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