2013-03-04 3 views
1

그래서 파일을 쓰려고 할 때 NullPointerException을 만드는 앱을 실행하고 있습니다.이 FileOutputStream이 NullPointerException을주는 이유는 무엇입니까?

내 첫 번째 활동 (아래 참조)은 사용자가 새 설정 버튼을 누를 때 NewSet 활동을 호출합니다. NewSet 활동에 입력을 쓰려고하면 NullPointerException이 발생합니다. fileOut을 출력하면 null 값을 가진 메시지가 표시됩니다. fileOut은 전역 적으로 선언되지만 onCreate에서 초기화됩니다. 두 클래스는 아래와 같습니다. (... 때문에, 무관에 코드를 생략 나타냅니다.)

03-03 23:08:42.183: W/System.err(8435): java.lang.NullPointerException 
03-03 23:08:42.183: W/System.err(8435):  at android.content.ContextWrapper.openFileOutput(ContextWrapper.java:173) 
03-03 23:08:42.183: W/System.err(8435):  at com.ollien.flashcards.MainActivity.newSet(MainActivity.java:112) 
03-03 23:08:42.183: W/System.err(8435):  at com.ollien.flashcards.NewSet.submit(NewSet.java:35) 
03-03 23:08:42.193: W/System.err(8435):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-03 23:08:42.193: W/System.err(8435):  at java.lang.reflect.Method.invoke(Method.java:511) 
03-03 23:08:42.193: W/System.err(8435):  at android.view.View$1.onClick(View.java:3594) 
03-03 23:08:42.193: W/System.err(8435):  at android.view.View.performClick(View.java:4204) 
03-03 23:08:42.193: W/System.err(8435):  at android.view.View$PerformClick.run(View.java:17355) 
03-03 23:08:42.193: W/System.err(8435):  at android.os.Handler.handleCallback(Handler.java:725) 
03-03 23:08:42.203: W/System.err(8435):  at android.os.Handler.dispatchMessage(Handler.java:92) 
03-03 23:08:42.203: W/System.err(8435):  at android.os.Looper.loop(Looper.java:137) 
03-03 23:08:42.203: W/System.err(8435):  at android.app.ActivityThread.main(ActivityThread.java:5226) 
03-03 23:08:42.203: W/System.err(8435):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-03 23:08:42.203: W/System.err(8435):  at java.lang.reflect.Method.invoke(Method.java:511) 
03-03 23:08:42.203: W/System.err(8435):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795) 
03-03 23:08:42.203: W/System.err(8435):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562) 
03-03 23:08:42.203: W/System.err(8435):  at dalvik.system.NativeStart.main(Native Method) 
+2

전체 스택 추적을 게시 할 수 있습니까? –

+0

여기 있습니다, 죄송합니다. http://pastebin.com/3S2dLpid – ollien

+0

게시판 고양이 추적 – Pragnani

답변

0

예외가 android.content.ContextWrapper 클래스에 던져지고

public class MainActivity extends Activity { 
    static ArrayList sets; 
    FileOutputStream fileOut; 
    BufferedReader read; 
    String line; 
    ArrayAdapter<String> adapter; 
    ListView listView; 
    Intent newSetIntent; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     setContentView(R.layout.activity_main); 
     newSetIntent=new Intent(this,NewSet.class); 

     listView=(ListView)findViewById(R.id.setList); 
     sets=new ArrayList(); 
     try { 
      read=new BufferedReader(new BufferedReader(new InputStreamReader(openFileInput("SETS.txt")))); 
      fileOut=openFileOutput("SETS.txt",Context.MODE_APPEND); 
     } catch (FileNotFoundException e) { 
      System.out.println("File not found"); 
      try { 

       fileOut.write("".getBytes()); 
      } catch (IOException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      System.out.println("IOE"); 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     getSets(); 
     toList(); 
     super.onCreate(savedInstanceState); 
    } 

    ... 

    public void newSet(String newSetName){ 
     System.out.println(newSetName); 
     sets.add(newSetName); 

     try { 
      fileOut=openFileOutput("SETS.txt",Context.MODE_APPEND); 
      fileOut.write(newSetName.getBytes()); 
      fileOut.write("\n".getBytes()); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     catch (NullPointerException NPE){ 
      System.out.println(fileOut); 
      NPE.printStackTrace(); 
     } 


    } 
} 





public class NewSet extends Activity { 

    EditText input; 
    String setName; 
    MainActivity main; 
    ... 
    public void submit(View view){ 
     setName=input.getText().toString(); 
     System.out.println("CREATING SET:"+setName); 
     main.newSet(setName); 
     finish(); 

    } 

} 

전체 스택 추적. 방법은 다음과 같습니다

public FileOutputStream openFileOutput(String name, int mode) throws FileNotFoundException 
{ 
    return mBase.openFileOutput(name, mode); // Line number 173 
} 

여기, 내가 NullPointerException이 발생할 수있는 볼 수있는 유일한 가능성은 Context가 NULL 타입의 데이터 멤버 mBase입니다.

Context 데이터 멤버가 null이 아닌지 확인할 수 있습니까?

+0

죄송 합니다만 컨텍스트 데이터 멤버를 확인하면 무엇을 의미합니까? – ollien

관련 문제