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

다이얼로그 취소/저장 버튼 누르면 앱이 종료되어버려요! (수정했어요!)

0 추천
/////////만약 수정모드에 들어갔다면///////////////////////////////////////
if (modi == 1) {
    if ((position > 6) && (position % 6 != 0)) {
        Toast.makeText(getApplicationContext(), position + "을 클릭", Toast.LENGTH_SHORT).show();

        ///////AlertDialog
        Context mContext = getApplicationContext();
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
        View layout = inflater.inflate(R.layout.custom_dialog, (ViewGroup) findViewById(R.id.layout_root));

        AlertDialog.Builder aDialog = new AlertDialog.Builder(MainActivity.this);
        aDialog.setTitle("과목을 추가합니다.");

        aDialog.setView(layout);

        et1 = (EditText) findViewById(R.id.editText); //다이얼로그에 있는 에디트 텍스트를 불러온다.
        et2 = (EditText) findViewById(R.id.editText2); //다이얼로그에 있는 에디트 텍스트를 불러온다
        Log.d("tag", "에디트텍스트 불러옴");

        aDialog.setPositiveButton("저장", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int Conwhich) {

                Log.d("tag", "포지티브버튼 들어감");
                // 텍스트 입력란이 빈 공간이면 무시
                if ("".equals(et1.getText().toString())) {
                    Toast.makeText(getApplicationContext(), "모두 기입해주세요.", Toast.LENGTH_SHORT).show();
                    Log.d("tag", "공백");
                    return;
                } else {
                    Toast.makeText(getApplicationContext(), "저장", Toast.LENGTH_SHORT).show();
                    Log.d("tag", "토스트메시지 저장");
                    textViewSubTitle.setText(et1.getText().toString());
                    textViewSubTitle.setBackgroundColor(checkedColour);
                }
                Log.d("tag", "에디트텍스트 끝남");
            }
        });
        //aDialog.show();
11-09 16:28:51.972 30151-30151/com.kimmou92.time D/tag: 포지티브버튼 들어감
D/AndroidRuntime: Shutting down VM
W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x417c6da0)
E/AndroidRuntime: FATAL EXCEPTION: main
E/AndroidRuntime: Process: com.kimmou92.time, PID: 30151
E/AndroidRuntime: java.lang.NullPointerException
E/AndroidRuntime:     at com.kimmou92.time.MainActivity$TableAdapter$2$1
.onClick(MainActivity.java:268)
E/AndroidRuntime:     at com.android.internal.app.AlertController$ButtonHandler
.handleMessage(AlertController.java:170)
E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:146)
E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5653)
E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method)
 I/Process: Sending signal. PID: 30151 SIG: 9
시간표 앱을 만들고 있습니다.
시간표 수정모드에 들어가서 -> 그리드뷰의 셀을 클릭하면 -> 다이얼로그가 떠서 과목명을 입력합니다 -> 저장 누르면 셀에 텍스트가 들어갑니다.

이 상황인데, 다이얼로그에 취소나 저장을 누르면 앱이 종료되버립니다!!! ㅠㅠ
로그를 띄어보면 "포지티브버튼들어감"까지 나오구요.
그다음에 if문이 안되는건지, "에디트텍스트 끝남"이 나오지도 않고 종료...

도와주셔용!!! ㅠㅠㅠ
김달아 (180 포인트) 님이 2015년 11월 9일 질문
김달아님이 2015년 11월 9일 수정

1개의 답변

0 추천

 

로그 남겨놓은 것이 잘려서 보이질 않네요.

대충 소스를 보아하니, EditText 선언 문제 같습니다.

Dialog 안에 view 를 설정하려는 것 같은데,

et1 = (EditText)findViewById(R.id.editText); 를

et1 = (EditText)layout.findViewById(R.id.editText); 로 바꾸어보세요.

개발자초심 (21,220 포인트) 님이 2015년 11월 9일 답변
오! layout을 달았더니 종료는 되지 않구요
그리드뷰에 입력한 텍스트가 살짝 떴어요!
그런데 뜨자마자 바로 사라지네요..?ㅠㅠㅠㅠ
...