마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드스튜디오 대화상자에서 확인버튼에 이벤트 주기

0 추천
확인 버튼을 누르면 입력한 숫자를 문자형으로 파일에 저장하려고 합니다.
dlg.setPositiveButton("확인", new DialogInterface.OnClickListener() {
 @Override
public void onClick(DialogInterface dialog, int which) {       
  try {
   FileOutputStream fos = openFileOutput("test.txt", Context.MODE_PRIVATE);
   EditText edit = (EditText)findViewById(R.id.smoke);
   fos.write(edit.getText().toString().getBytes());
   fos.close();
  } catch (IOException e) {}
 }
});
이렇게 한 후,
에디트텍스트에 입력하고 확인을 누르면 앱이 중지되었다고 뜹니다..
중지되는 이유가 무엇이고 어떻게 해서 이벤트를 주어야하나요?
익명사용자 님이 2016년 6월 8일 질문

1개의 답변

0 추천
파일 쓰기, 네트워크 작업 같은 시간이 걸리는 작업은

메인 스레드에서 돌릴수 없으며

onClick 안은 메인 쓰레드 부분이기 떄문에

파일 작성은 Thread나 AsyncTask를 이용하셔야 합니다 ..
모나미153 (17,540 포인트) 님이 2016년 6월 8일 답변
dlg.setPositiveButton("확인", new DialogInterface.OnClickListener() {
 @Override
public void onClick(DialogInterface dialog, int which) {
 new Thread() {
  public void run() {
    try {
     FileOutputStream fos = openFileOutput("test.txt", Context.MODE_PRIVATE);
     EditText edit = (EditText)findViewById(R.id.smoke);
     fos.write(edit.getText().toString().getBytes());
     fos.close();
    } catch (IOException e) {}
  }
 }   
}
});

이렇게 하는거 맞나요..? 저렇게 했는데도 중지되더라구요..ㅠㅠㅠ
fos.write(edit.getText().toString().getBytes());
여기에서 java.lang.NullPointerException 오류가 납니다..ㅠㅠ
아.......
fos 나 edit 둘중에 하나는 null이겠네요.
잘 살펴보시기 바랍니다.
...