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

Text 값이나 CheckBox 값을 읽을려고 할시 에러발생

0 추천
package kr.ac.aaaa;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.*;
import android.view.View.*;
import android.widget.*;

public class MainActivity extends Activity {
 
 private static final int WARNING=1; // 에러발생 메뉴를 실행 시키기 위한 정적변수 선언
 private static final int ORDER=2; // 주문 메뉴를 실행 시키기 위한 정적변수 선언

 EditText editText1,editText2;
 CheckBox check;
 
    @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
        editText1 = (EditText) findViewById(R.id.subject);
        editText2 = (EditText) findViewById(R.id.amount);
     check = (CheckBox) findViewById(R.id.check);

  // 버튼 1번 클릭시 WARNING다이알로그  출력
  Button b1 = (Button) findViewById(R.id.error);
  b1.setOnClickListener(new OnClickListener() {
      @Override
         public void onClick(View v) {
             showDialog(WARNING);
       }
  });

  // 버튼 2번 클릭시 ORDER다이알로그 출력
  Button b2 = (Button) findViewById(R.id.electrics);
  b2.setOnClickListener(new OnClickListener() {
         @Override
         public void onClick(View v) {
             showDialog(ORDER);
         }
  });

  // 버튼 3번 클릭시 ORDER다이알로그 출력
  Button b3 = (Button) findViewById(R.id.computers);
  b3.setOnClickListener(new OnClickListener() {
         @Override
         public void onClick(View v) {
             showDialog(ORDER);
      }
  });
 }
 
 protected Dialog onCreateDialog(int id){ // AlertDiaog 함수 선언

  
  switch(id){
  
  case WARNING:
   AlertDialog.Builder dialog1 = new AlertDialog.Builder(this);
   dialog1.setTitle("에러발생"); // 제목 설정
   dialog1.setMessage("어쩌고 저쩌고 이유로 작업을 계속할 수 없어 종료합니다."); // 내용 
   dialog1.setCancelable(false);
   dialog1.setPositiveButton("종료", new DialogInterface.OnClickListener(){ //  버튼 생성 및 이벤트 처리
    public void onClick(DialogInterface dialog,int whichButton){
     MainActivity.this.finish(); // 엑티비티 종료시킴
    }
   });
   AlertDialog alert1 = dialog1.create(); // alertDialog 생성함
   return alert1;
   
   
  case ORDER:
   /* 아래 3개 코드는  ui를 alertDialog에 출력하기 위해 alert.xml을 가져와 화면에 띄우기 위한 코드 */
   Context mContext = getApplicationContext(); 
   LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
   View layout = inflater.inflate(R.layout.custom,(ViewGroup) findViewById(R.id.layout_root));

   AlertDialog.Builder dialog2 = new AlertDialog.Builder(this);
   dialog2.setTitle("주문정보를 입력하시오"); // 타이틀
   dialog2.setIcon(R.drawable.ic_launcher); // 타이틀 아이콘 
   dialog2.setCancelable(false);
   dialog2.setView(layout) // 커스텀 다이알로그 출력
   
   .setPositiveButton("확인",new DialogInterface.OnClickListener(){ // 확인버튼 생성 및 이벤트 처리
    public void onClick(DialogInterface dialog,int item){
     
     if(check.isChecked() == true){
                  Toast.makeText(getApplicationContext(),
                  // 제목 출력
            "제목 : " + R.id.subject +
            // 수량 출력
            "\n수량 : " + R.id.amount +
            "\n착불결제 입니다.",
            Toast.LENGTH_SHORT).show();
                  Toast.makeText(getApplicationContext(),
                  // 제목 출력
            "제목 : " + editText1 +
            // 수량 출력
            "\n수량 : " + getText(R.id.amount) +
            "\n착불결제 입니다.",
            Toast.LENGTH_SHORT).show();
     }
     else {
                  Toast.makeText(getApplicationContext(),
                  // 제목 출력
            "제목 : " + editText1 +
            // 수량 출력
            "\n수량 : " + editText2 +
            "\n착불결제가 아닙니다.",
            Toast.LENGTH_SHORT).show();
     }
             }
   })
   .setNegativeButton("취소",new DialogInterface.OnClickListener(){ // 취소 버튼 생성 및 이벤트 처리
    public void onClick(DialogInterface dialog,int whichbutton){
     dialog.cancel(); // 취소 시킨다.
    }
   });
   AlertDialog alert2 = dialog2.create();
   alert2.show();
   return alert2;
  }   
  return null;
 }
}

커스텀 다이얼로그 창에서 "제목" 과 "수량" , 체크박스 들을 설정하고 확인버튼을 누르면

 

토스트로 적은 값이 출력되어야 하는데

 

어플이 그냥 꺼지네요 ㅠㅠ

 

아레인 (160 포인트) 님이 2014년 4월 18일 질문

2개의 답변

+1 추천

어플이 그냥 꺼진다는 거는 sorry-popup이 발생했단 소리인데,
logcat을 이용해서 왜 죽는지 확인해보세요
NullPointerException 과 같은 Exception이 발생했을 것이고,
로그캣을 잘 보면 해당 line도 표시가 되어 있답니다.

익명사용자 님이 2014년 4월 18일 답변
0 추천

음.. 기본 예제부터 차근차근 공부해보세요 ^^;;

에디트텍스트 사용에 대한 개념을 전혀 모르고 계신것 같네요 ㅠ ㅠ

그리고 R.id.subject 등은 이름 그대로

리소스의 아이디를 뜻하는건데 글쓴님이 잘못 오해하고 사용하신것 같네요..

초보개발자ㅠ (33,870 포인트) 님이 2014년 4월 18일 답변
...