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

다이얼로그 관련해서 , 아래와 같은 에러가 뜨는 이유를 모르겠습니다.

0 추천

 

안녕하세요.

 

다이얼로그를 생성하고 출력하는데 있어 에러가 뜨기에.. 어떤 이유에서 에러가 나는지 이유를 잘 모르겠습니다. 아래는 에러의 내용입니다 ㅠ  null 값을 참조하고 있다는데.. 이 부분을 어떻게 해결해 주어야 할지 잘 모르겠습니다. null값이 있을만한 부분을 주지 않았었는데 어디에서 이렇게 발생을 하는건지.. 쩜쩜쩜..

 

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: ex.real_project, PID: 13178
                  java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
                      at ex.real_project.Custom_Dialog_Thank_You.<init>(Custom_Dialog_Thank_You.java:33)
                      at ex.real_project.Payment$9.onClick(Payment.java:423)

 

<Custom_Dialog_Thank_You > java 파일입니다.

import android.app.Dialog;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.widget.Button;

public class Custom_Dialog_Thank_You extends Dialog implements View.OnClickListener {

    Button btn;

    public Custom_Dialog_Thank_You(Context context) {
        super(context);

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_custom__dialog__thank__you); 


        btn = (Button) findViewById(R.id.Pay);
        btn.setOnClickListener(this);       // 이쪽에서 에러발생..
    }


    public void onClick(View view) {
        if (view.getId() == R.id.Pay) {
            if (isShowing()) {
                dismiss();
            }
        }
    }
}

 

그리고 아래는 Payment.java이며  버튼 아래부분에 아래의 코드와같이 Thank_You를 생성하도록 만들었습니다.
그리고, 바로 아래의 첫줄 부분에서 에러가 발생합니다.

Custom_Dialog_Thank_You Thank_PopUp = new Custom_Dialog_Thank_You(Payment.this);
Thank_PopUp.show();

그리고 아래는 Payment 부분의 xml 부분입니다.

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <Button
        android:id="@+id/Pay"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="결제"
        android:background="#7b00ff"
        />

</LinearLayout>

 

Kind카인드 (3,600 포인트) 님이 2016년 11월 23일 질문

1개의 답변

0 추천
 
채택된 답변
btn이 null이군요.
익명사용자 님이 2016년 11월 23일 답변
Kind카인드님이 2016년 11월 25일 채택됨
btn = (Button) findViewById(R.id.Pay);
부분이있는데 btn이 왜 Null 이죠 ?
findViewById를 호출한다고 해서 항상 View가 리턴되는게 아닙니다.
답변 감사드립니다..
다른 분들도 btn이 null 이라고 하는데 저도 .. 이 말을 이해를 못하겠습니다.
xml에서 id값을 btn으로 주었고 엄연히 xml부분에 존재하는데 이게 왜 null인지..
그러면 도데체 어떻게 해줘야 하는건가요 ...?
정말 답변 감사드립니다..
다른 분들도 btn이 null 이라고 하는데 저도 .. 이 말을 이해를 못하겠습니다.
xml에서 id값을 btn으로 주었고 엄연히 xml부분에 존재하는데 이게 왜 null인지..
그러면 도데체 어떻게 해줘야 하는건가요 .....?
Dialog 사용하는 방법을 제대로 공부하시기 바랍니다.
생성자에서 setContentView를 호출하면 정상 동작하지 않을겁니다.
끙... 이와 같은 질문을 여러번 올렸었는데 일반적인 다이얼로그들의 사례를 봐도 왜 저렇게 뜨는지 모르겠네요 ㅠ
...