2014-04-22 5 views
-2

FileOutputStream을 사용하여 간단한 프로그램을 실행하려고합니다. 이 프로그램을 실행하면 응용 프로그램이 "Application stoppped an unfortunately"라는 메시지를 표시합니다. Logcat에 NullPointerException이 표시됩니다. 내 코드에 무슨 문제가 있습니까 ??FileOutputStream의 Null 포인터 예외

package com.example.storageinternal; 

import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 

public class MainActivity extends Activity { 
    private EditText editname,editemail; 
    private Button save; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     editname = (EditText)findViewById(R.id.editname); 
     editemail = (EditText)findViewById(R.id.editemail); 

     save.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) 
      // TODO Auto-generated method stub 
      String namestring = editname.getText().toString(); 
      String emailstring = editemail.getText().toString(); 
      FileOutputStream fos = null; 

      try { 
       fos = openFileOutput("Mystorage",Context.MODE_PRIVATE); 
      } catch (FileNotFoundException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      try { 
       fos.write(namestring.getBytes()); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      try { 
       fos.write(emailstring.getBytes()); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace();   
      } 
      finally { 
       if (fos != null) { 
        try { 
         fos.close(); 
        } 
        catch (IOException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
       } 
      } 
     }); 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 
+0

'save = (Button) findViewById (R.id.yoursavebtn);' – Mobi

답변

0

이 시도 ..

을 당신은 당신의 저장 Button

save = (Button) findViewById(R.id.buttonid); 

save.setOnClickListener(new OnClickListener() {

당신의 버튼 저장하기 전에 다음 요 null로 초기화하지 이 u는 당신이 당신의 onCreate()Button 초기화를 누락 NPE

1

을 얻을 것이다 그 시간 save.setOnClickListener로 사용하려고합니다.

onClickListener을 구현하기 전에 Button을 초기화하기 만하면됩니다.

Button save=(Button)findViewById(R.id.button); 
-1
save.setOnClickListener(new OnClickListener() { 

이동합니다 OnCreate 기능에와 버튼 저장하는 것이 intitialize 전에이 라인.

+0

답을 한 번 검토하면 ... 처음에 어떻게 그 문을 안으로 옮길 수 있습니까? onClick? 두 번째는 해당 위젯을 초기화하지 않고 어떻게 클릭 이벤트를 발생시킬 수 있습니까? 여기에 답을 얻은 것이 확실합니까? – GvSharma

+0

내가 onclick을 작성하는 실수를했는데 코드가 정확하고 문제가 save button을 초기화하지 않고 edittext처럼 findviewbyid로 정의하면 nullpointer 예외가 발생하지 않습니다. 수정이 아니라면 xml activity_main 코드를 여기에 입력하십시오. –