2011-03-24 42 views
3

崩溃崩溃上调用getFilesDir(),下面是代码调用getFilesDir()

public void generateFile() throws IOException{ 


    File fileDir = getFilesDir(); //crashing 

    String filedir=fileDir.toString(); 

    String OUTPUT_FILE = "123.txt"; 
    String data = "TEST DATA to WRITE"; 

    File newFile = new File(fileDir,OUTPUT_FILE); 

    ........ 

和堆栈跟踪

03-24 16:33:33.623: VERBOSE/APP(2180): Calling GenerateFile 
03-24 16:33:33.623: DEBUG/AndroidRuntime(2180): Shutting down VM 
03-24 16:33:33.623: WARN/dalvikvm(2180): threadid=1: thread exiting with uncaught exception (group=0x4001d8a8) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180): FATAL EXCEPTION: main 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.Android.APP/com.Android.APP.Readings}: java.lang.NullPointerException 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at android.app.ActivityThread.startActivityNow(ActivityThread.java:2503) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:654) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at android.widget.TabHost.setCurrentTab(TabHost.java:326) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:132) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:456) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at android.view.View.performClick(View.java:2408) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at android.view.View$PerformClick.run(View.java:8818) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at android.os.Handler.handleCallback(Handler.java:587) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at android.os.Handler.dispatchMessage(Handler.java:92) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at android.os.Looper.loop(Looper.java:123) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at java.lang.reflect.Method.invoke(Method.java:521) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at dalvik.system.NativeStart.main(Native Method) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180): Caused by: java.lang.NullPointerException 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at android.content.ContextWrapper.getFilesDir(ContextWrapper.java:178) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at com.Android.APP.Logging.generateFile(Logging.java:33) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at com.Android.APP.Readings.onCreate(Readings.java:90) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
03-24 16:33:33.670: ERROR/AndroidRuntime(2180):  ... 18 more 
+1

什么是Readings.java Line 90? – Blundell 2011-03-24 11:16:59

+0

记录是从哪里来的?您可能需要将“this”作为上下文传递到Logging.generateFile。 – matheeeny 2011-03-24 18:34:05

+0

我有一些像Logging obj = new Logging(); \t \t尝试{ \t \t \t obj.generateFile(); ....... \t \t}班级记录延伸活动 – m4n07 2011-03-27 17:01:51

回答

2

贵类扩展活动?需要更多的上下文才能获得正确的答案。

编辑

你在哪里调用generateFile()?您的应用程序完全加载之前,您可能会要求提供FilesDirectory。

你只需要做一些检查:

public void generateFile() throws IOException{ 

File fileDir = getFilesDir(); //crashing 
if(fileDir != null){ 
    String filedir=fileDir.toString(); 

    String OUTPUT_FILE = "123.txt"; 
    String data = "TEST DATA to WRITE"; 

    File newFile = new File(fileDir,OUTPUT_FILE); 
} else { 
    Log.e("MyApp", "Something went wrong, filesDir is null"); 
} 
} 
+0

这应该是一个评论,而不是答案 – 2011-03-24 12:38:37

+0

@Dave一旦他回答我要编辑我的答案,一个完整的答案。但公平点 – Blundell 2011-03-24 13:06:21

+0

我有一些事情,记录obj = new Logging();尝试{obj.generateFile(); .......}和类日志记录扩展活动 – m4n07 2011-03-28 06:37:55

1

的OP没有为了能够提出一个解决方案提供足够的信息,但我不得不沿着相同的路线类似的问题,在其我将调用移至包括getFilesDir()的方法。在定义MyActivity字段时调用它之前,在将它移入该活动的onCreate()之后,异常消失。