우와테크

안드로이드 스튜디오 android studio에서 alert창 띄우기와 this 관련 error 오류 해결 본문

java-androidStudio

안드로이드 스튜디오 android studio에서 alert창 띄우기와 this 관련 error 오류 해결

uwaTech 2022. 2. 10. 14:15

alert을 번역하면 알리다. 의식하게 하다. 라는 뜻을 가진다.

 

모바일에서 alert창을 띄운다는 것은 보고 있는 A 화면에서 B 화면으로 화면을 바꾸지 않고 작은 포스트잇처럼 창을 띄워서 정보를 표현하는 것을 말한다.

 

우와는 버튼을 눌렀을 때 반응 하는지 안하는지를 확인하고자 alert창을 띄우는 기능을 넣는다.

 

다음 과정을 거친다.

1. 버튼 UI를 만든다.

2. 버튼에 리스너를 정의한다.

3. 리스너에 alert창을 띄울 수 있게 기능을 정의한다.

 

버튼 UI를 만든다. [activity_main.xml]
<Button
    android:id="@+id/buttonAdd"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"/>

버튼을 만들어준다.

여기서 id를 적어주면 java 소스에서 이벤트를 정의할 수 있다.

 

버튼에 리스너를 정의한다.[MainActivtity.java]
리스너에 alert창을 띄울 수 있게 기능을 정의한다. [MainActivtity.java]
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button btnAdd = (Button)findViewById(R.id.buttonAdd);
    btnAdd.setOnClickListener(new Button.OnClickListener() {
        @Override
        public void onClick(View v) {
            AlertDialog.Builder alert = new AlertDialog.Builder(this);
            alert.setTitle("알림창 제목");
            alert.setMessage("alert창 보입니까???");
            AlertDialog dialog = alert.create();
            dialog.show();
        }
    });
}

onCreate 안에 buttonAdd를 연결해서 setOnClickListener를 정의해준다.

onClick 안에 AlertDialog를 정의한다.

 

간단하다.. 

 

UI를 만들때 어떤 걸 클릭이벤트를 줄 것인지 미리 잡아놓고 가는 것이 빼먹지 않고 기능 구현을 할 수 있는 한가지 방법이다.

 

끝.하려고 했는데 매번 놓치는 게 있다.

 

바로 this...

 

저렇게 돌리면 this에서 오류가 생긴다

 

'Builder(android.content.Context)' in 'androidx.appcompat.app.AlertDialog.Builder' cannot be applied to '(anonymous android.view.View.OnClickListener)'

 

this가 뭘 가르키는지 못찾는 거다.

 

이럴땐 정확하게 알려줘야 한다.

AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);

이렇게 MainActivity를 가리키라고 알려줘야 오류가 사라진다.

 

이 기본적인 기능은 자주쓰기 때문에 공통코드에 담고, 재사용해서 쓰는것을 추천한다.

여기까지 해서 진짜 끝.

 

2022.01.04